5,392
社区成员
发帖
与我相关
我的任务
分享
PRecPackHead = ^TRecPackHead;
TRecPackHead = record
PackLen : ShortInt;
TransNum : array[0..4] of Char;
ResultNum : array[0..6] of Char;
ResultStr : array[0..40] of Char;
end;
var
PackHead: PRecPackHead;
procedure TRecvThread.Execute;
var
Com, Msg, ResultNum, AType: string;
Len: Integer;
begin
if not frmClient.IdTCPClient.Connected then
begin
Terminate;
Exit;
end;
while (not Terminated) and frmClient.IdTCPClient.Connected do
begin
Msg := frmClient.IdTCPClient.ReadLn('', 5);
if Msg <> '' then
begin
if Msg[1] <> '@' then
begin
frmClient.mmoMsg.Lines.Add(Msg);
end
else
begin
Com := UpperCase(Trim(Copy(Msg, 2, Pos('=', Msg) -2)));
ResultNum := UpperCase(Trim(Copy(Msg, Pos('RESULT', Msg) +7, 4)));
Len := StrToInt(Copy(Msg, Pos('LENGTH', Msg) +7, 6));
if ResultNum = '0000' then
begin
GetMem(PackHead, 56);
frmClient.mmoMsg.Lines.Add(' Msg='+Msg);
frmClient.IdTCPClient.ReadBuffer(PackHead, 56);
AType := PackHead.ResultStr; //错误地址
frmClient.mmoMsg.Lines.Add(' Msg='+Msg);
end;
end;
end;
end;
end;