Q&A

  • 클라이언트로 값을 보내려고 하는데요...
클라이언트로 값을 보내면서 에러가 자꾸뜹니다. 에러 내용은 그림에 삽입 시켜 놓았습니다. 소스는 다음과 같고요..계산부분에서 계산한 Aa1,Aa2,Aa3..등을 클라이언트로 보내고 싶습니다. 그리고 클라이언트로부터 변수값을 받아서 계산부분에서 계산을 하고 계산한것을 다시 클라이언트로 보내고 이런 알고리즘입니다. 클라이언트로부터 변수를 받아서 계산하는건 되는데 계산된 값을 보내질 못하는군요... 급해서 그런데 고수님들 아시는분을 답변 부탁드립니다. 보내는 곳은 맨밑에 있습니다. 받는곳은 바로 위에 있고여 (클라이언트로 부터)...그리고 계산부분은 무한루프 입니다.









{*--------------수학계산 부분--------------*}

procedure TSimul.Simulmain;

var

I1,I2,I3,I4,I5: Double;

Rtm,Rtp,Buns: Double;

T,T1,T2,T3,T4,T5,Head: Double;

Pno,Vo,Dstad: Double;

Lp,N,Kk,I,Nn: Integer;

Fk,Q,R: DEARRAY5;

Label 40;

begin

Data;

Pno:=Pnom/60.0;

Vo:=0.514444*Vokt;

Head:=Headd*Dtor;

Psaic:=Psaicd*Dtor;

Psaiw:=Psaiwd*Dtor;

Vcm:=0.514444*Vckt;

Xr:=-0.5;

Xp:=-0.48;

P:=Dia*Pd;

Ddmax:=3.0;

Ddmax:=Dtor*Ddmax;

{*---------------------------------------------*}

I1:=2.0*Al_ld*Lbp*Dra/Loa/Loa;

I2:=2.0*At_ld*Lbp*Dra/B/B;

I3:=Loa/B;

I4:=Ss_loa;

I5:=C_loa;

{*---------------------------------------------*}

For I:= 1 to 19 do begin

Cx[I]:=Da0[I]+Da1[I]*I1+Da2[I]*I2+Da3[I]*I3+Da4[I]*I4+Da5[I]*I5+Da6[I]*Mm;

Cy[I]:=Db0[I]+Db1[I]*I1+Db2[I]*I2+Db3[I]*I3+Db4[I]*I4+Db5[I]*I5

+Db6[I]*Ass_al;

Cn[I]:=Dc0[I]+Dc1[I]*I1+Dc2[I]*I2+Dc3[I]*I3+Dc4[I]*I4+Dc5[I]*I5;

end;

{*----------------------Initial Condition-----------------------*}

For I:= 1 to 10 do begin

D[I]:=0.0;

end;

D[8]:=Pno;

D[10]:=Vo;

D[1]:=D[10]*Cos(D[9]);

D[2]:=-1.0*D[10]*Sin(D[9]);

D[4]:=Head;

T:=0.0;

Lp:=0;

N:=0;

{*----------초기값을 보내는 부분--------------*}

Out1:='시간';

Out2:='선속';

Out3:='앙각';

Out4:='PN(RPM)';

Out5:='회두각';

Out6:='X 좌표';

Out7:='Y 좌표';

Out8:='타각';

Memo1.Lines.Add(Format('%7s %7s %9s %10s %9s %9s %9s %8s'

,[out1,out2,out3,out4,out5,out6,out7,out8]));

Memo1.Lines.Add(Format('%7.2F %8.3F %8.3F %11.3F %11.3F %8.3F %12.3F %9.2F'

,[T,Vokt,D[9],Pnom,Headd,D[5],D[6],D[7]]));

{*---------------------------------------------*}

Rtm:=1.0-0.5*Sqrt(2.0);

Rtp:=1.0+0.5*Sqrt(2.0);

Buns:=1.0/6.0;

{*---------------------------------------------*}

For I:= 1 to 8 do begin

Q[I]:=0.0;

end;

{*---------------------------------------------*}

Pnstam:=Pnom;

Dstad:=0.0;

{*---------------------------------------------*}

40:

Application.ProcessMessages;

Order;

N:=N+1;

{**************************************************

--RUNGE-KUTTA-GILL--

**********************1ST STEP*********************}

T1:=T;

Simuldynamc;

Ddot:=Steer(Dsta,D[7],Te,Ddmax);

Pndot:=Propel(Pnsta,D[8],Tn);

Fk[1]:=Dt*Dd[1];

Fk[2]:=Dt*Dd[2];

Fk[3]:=Dt*Dd[3];

Fk[4]:=Dt*D[3];

Fk[5]:=Dt*(D[1]*Cos(D[4])-D[2]*Sin(D[4]));

Fk[6]:=Dt*(D[1]*Sin(D[4])+D[2]*Cos(D[4]));

Fk[7]:=Dt*Ddot;

Fk[8]:=Dt*Pndot;

For I:= 1 to 8 do begin

R[I]:=0.5*Fk[I]-Q[I];

D[I]:=D[I]+R[I];

Q[I]:=3.0*R[I]-0.5*Fk[I]+Q[I];

end;

{***********************2ND STEP******************}

T2:=T+0.5*Dt;

Simuldynamc;

Ddot:=Steer(Dsta,D[7],Te,Ddmax);

Pndot:=Propel(Pnsta,D[8],Tn);

Fk[1]:=Dt*Dd[1];

Fk[2]:=Dt*Dd[2];

Fk[3]:=Dt*Dd[3];

Fk[4]:=Dt*D[3];

Fk[5]:=Dt*(D[1]*Cos(D[4])-D[2]*Sin(D[4]));

Fk[6]:=Dt*(D[1]*Sin(D[4])+D[2]*Cos(D[4]));

Fk[7]:=Dt*Ddot;

Fk[8]:=Dt*Pndot;

For I:= 1 to 8 do begin

R[I]:=Rtm*(Fk[I]-Q[I]);

D[I]:=D[I]+R[I];

Q[I]:=Q[I]+3.0*R[I]-Rtm*Fk[I];

End;

{*******************3RD STEP********************}

T3:=T+0.5*Dt;

Simuldynamc;

Ddot:=Steer(Dsta,D[7],Te,Ddmax);

Pndot:=Propel(Pnsta,D[8],Tn);

Fk[1]:=Dt*Dd[1];

Fk[2]:=Dt*Dd[2];

Fk[3]:=Dt*Dd[3];

Fk[4]:=Dt*D[3];

Fk[5]:=Dt*(D[1]*Cos(D[4])-D[2]*Sin(D[4]));

Fk[6]:=Dt*(D[1]*Sin(D[4])+D[2]*Cos(D[4]));

Fk[7]:=Dt*Ddot;

Fk[8]:=Dt*Pndot;

For I:= 1 to 8 do begin

R[I]:=Rtp*(Fk[I]-Q[I]);

D[I]:=D[I]+R[I];

Q[I]:=Q[I]+3.0*R[I]-Rtp*Fk[I];

end;

{*********************4TH STEP********************}

T4:=T+Dt;

Simuldynamc;

Ddot:=Steer(Dsta,D[7],Te,Ddmax);

Pndot:=Propel(Pnsta,D[8],Tn);

Fk[1]:=Dt*Dd[1];

Fk[2]:=Dt*Dd[2];

Fk[3]:=Dt*Dd[3];

Fk[4]:=Dt*D[3];

Fk[5]:=Dt*(D[1]*Cos(D[4])-D[2]*Sin(D[4]));

Fk[6]:=Dt*(D[1]*Sin(D[4])+D[2]*Cos(D[4]));

Fk[7]:=Dt*Ddot;

Fk[8]:=Dt*Pndot;

For I:= 1 to 8 do begin

R[I]:=Buns*(Fk[I]-2.0*Q[I]);

D[I]:=D[I]+R[I];

Q[I]:=Q[I]+3.0*R[I]-0.5*Fk[I];

end;

{*******************WRITING ROUTINE********************}

Kk:=TRUNC(Dtt/Dt+0.1);

Nn:=N div Kk;

If (N-Nn*Kk)<>0 then begin

T:=T+Dt;

Goto 40;

end else If (N-Nn*Kk)=0 then begin

Aa1:=Rtod*D[9];

Aa2:=60.0*D[8];

Aa3:=Rtod*D[4];

Aa4:=Rtod*D[7];

Aa5:=D[5]/Lbp;

Aa6:=D[6]/Lbp;

Aa7:=1.943844*D[10];

T5:=T4;

{**************************************************}

Lp:=Lp+1;

If Lp=10 then begin

Memo1.Lines.Add(' ');

Lp:=0;

end;

Memo1.Lines.Add(Format('%7.2F %8.3F %8.3F %11.3F %11.3F %8.3F %12.3F %9.2F'

,[T5,Aa7,Aa1,Aa2,Aa3,Aa5,Aa6,Aa4]));

T:=T+Dt;

SLEEP(1000);

Goto 40;

end;

end;



procedure TSimul.Button1Click(Sender: TObject);

begin

Simulmain;

end;



procedure TSimul.ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

begin

Restr:=Socket.ReceiveText;

If Pos('R',Restr)<>0 then begin

Delete(Restr,1,1);

Pnstam:=StrToFloat(Restr);

end;

If Pos('H',Restr)<>0 then begin

Delete(Restr,1,1);

Dstad:=StrToFloat(Restr);

end;

end;



procedure TSimul.ServerSocket1ClientWrite(Sender: TObject;

Socket: TCustomWinSocket);

var Vel,Heading,Rpm,Ran: String;

begin

Application.Processmessages;

Vel:=FloatToStr(Aa7);

Heading:=FloatToSTr(Aa1);

Rpm:=FloatToStr(Aa2);

Ran:=FloatToStr(Aa4);

Sleep(1000);

ServerSocket1.Socket.SendText('V'+Vel);

Sleep(1000);

ServerSocket1.Socket.SendText('H'+Heading);

Sleep(1000);

ServerSocket1.Socket.SendText('R'+Rpm);

Sleep(1000);

ServerSocket1.Socket.SendText('A'+Ran);

end;



end.





0  COMMENTS
    • SexyBear
    • 2000.07.19 02:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 도마뱀
      2000.07.19 02:43
      아래꺼중 하나를 써봄이 어떨런지... 김영대씨의 답변 내용중... > // 아래에서 GetVolumeInfo 를 보...
    • 도마뱀
      2000.07.19 02:38
      SexyBear wrote: > 펜티엄2까지는 델파이팁의 CPUID 구하는 방법으로 해결이 되는데 > 펜티엄3에서는 CPU...
    • 김영해
      2000.07.19 03:21
      신현숙 wrote: > 안녕하세요.. > excel로 자료를 보내고, excel의 자료를 읽고 하다 보니.. > f1book콤...
    • 호야
    • 2000.07.19 02:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.19 02:20
      호야 wrote: > procedure TForm1.ToolButton5Click(Sender: TObject); > var > ActiveForm: TForm; > ...
    • ljb007
    • 2000.07.19 02:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오광배
      2000.07.29 03:35
      ljb007 wrote: > sql서버 C/S환경은 절대아님 > 10대의pc가 있는데 1대만 실행파일과 db을 설치하고 > ...
    • 최용일
      2000.07.19 12:11
      안녕하세요. 최용일입니다. for j:=1 to Column do AStdvr[i]:=a[j]*b[j,i]; 위에서 b가 이차원배...
    • Faster
    • 2000.07.19 01:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.21 22:15
      Faster wrote: 당근 가능하지요... 아주 기본적인 형태의 그래프군요.... > 넙쭉. > > 안녕하심까. ...
    • heimdal
    • 2000.07.19 01:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.19 01:25
      heimdal wrote: > datetimepicker을 이용해서 검색을 하고싶은데여.. > > 2000-7-17일을 클릭하면 디비...
    • heimdal
      2000.07.19 02:34
      구창민 wrote: > heimdal wrote: > > datetimepicker을 이용해서 검색을 하고싶은데여.. > > > > 2000...
    • 김영해
      2000.07.19 03:26
      heimdal wrote: > 구창민 wrote: > > heimdal wrote: > > > datetimepicker을 이용해서 검색을 하고싶은...
    • 한재필
      2000.07.19 01:15
      xfilemania wrote: > > Exit가 아니라 다른 것이 있는지 궁금합니다. Exit는 아예 프로시저에서 빠...
    • 구창민
      2000.07.19 01:10
      xfilemania wrote: > > Exit가 아니라 다른 것이 있는지 궁금합니다. Exit는 아예 프로시저에서 빠...
    • 문현범
    • 2000.07.19 00:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.19 01:13
      문현범 wrote: > 년도를 바꿀 수 있게금 하는 달력 콤포넌트를 가지고 계신분은 꼭 좀 공유 합시다. > 저...
    • 한재필
    • 2000.07.19 00:42
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이주흥
      2000.07.19 00:51
      한재필 wrote: > 델파이로 만든프로그램인데요 파라독스를 사용한 테이블이 연결되있는데 > 인스톨쉴드를...
    • 한재필
      2000.07.19 01:06
      이주흥 wrote: > 한재필 wrote: > > 델파이로 만든프로그램인데요 파라독스를 사용한 테이블이 연결되있...
    • 이주흥
      2000.07.20 02:39
      아..이제 봤네요.. BDE를 따로설치하는건 저도 해보지 않았구요.. 아마 정품을 사셨다면 따로 들어있을지...
    • 장명선
    • 2000.07.19 00:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.21 22:29
      장명선 wrote: Lock은 paradox만 그런것이 아니고 모든 DB가 마찬가지입니다. 다만 table을 create할때 L...
    • 초보자
    • 2000.07.19 00:35
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 초보자
      2000.07.19 02:58
      찾았습니다.. 먼저 고수님들의 성원에 감사들입니다. 아래의 내용을 From 문장을 합쳐서 하닌 문제없이 ...
    • ACCESS
      2000.07.19 02:39
      초보자 wrote: > 데이타는 ms access2000을 사용하고 있습니다. > > > ADOQBAR.Close; > ADOQBAR.S...
    • 어린왕자
      2000.07.19 01:53
      초보자 wrote: > 데이타는 ms access2000을 사용하고 있습니다. > > > ADOQBAR.Close; > ADOQBAR.S...
    • 어린왕자
      2000.07.19 03:02
      아..그룹별루 정렬을 안해두 되는 군요.. 이상타 쩌번엔 안되는 건 같던데..윈도우 98만 안되었던가? m...
    • 한재필
      2000.07.19 01:01
      김인수 wrote: > 고수님들 안녕하세요 > 오늘두 하수는 고수님들을 찾아 뵙는군요 > 염치없지만 제문제...
    • 이경문
      2000.07.19 00:47
      Form의 KeyPreview 를 true로 해 주시고 procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char)...
    • 김인수
      2000.07.19 01:08
      정말루 감사합니다 가르쳐주신대로 해보겠습니다 좋은 하루가 되시길 바랍니다 안녕히...
    • Black}{ole
      2000.07.19 00:27
      델파이걸 wrote: > 특정 폴더를 변수에 넣어주고 나서 거기에 있는것들을 하나씩 읽어와 > Listbox1.ite...
    • 델파이걸
      2000.07.19 01:27
      Black}{ole wrote: > > > > 안녕하세요. ^^ > 걍.. FileListBox를 이용하심.. 간단하게 해결될것 같...
    • Black}{ole
      2000.07.19 03:50
      델파이걸 wrote: > Black}{ole wrote: > > > > > > > 안녕하세요. ^^ > > 걍.. FileListBox를 이용...
    • 구창민
      2000.07.19 01:30
      김선달 wrote: > 스크린에서 현재 키보드 커서의 좌표를 알수 있는 함수를 알고 싶습니다. > API함수는 ...
    • heimdal
    • 2000.07.18 22:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Black}{ole
      2000.07.19 00:29
      델초... wrote: > 고수님들의 철저한 외면을 받고 있는 델초...입니다.....정말 울고 싶군요... > 다시한...
    • 전수완
    • 2000.07.18 22:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.18 22:36
      안녕하세요 하얀까마귀 입니다. 그냥 데이타베이스 엔진 설치하시고 개발하시면 됩니다.. 단지.. 테...