我最近在寫一個Socket的介面,我寫的是客戶端,發送資料過去之后,服務端會發回傳值給我,我用ClientSocket1Read接收到了回傳值,因為,里面的回傳值是判斷我操作是否成功的,所以我需要彈窗出來,顯示出來操作結果! 可是我賦值給公共變數,得到 的是空白,然后我在操作一次重復的操作,才會出現正確的回傳值。
procedure TMainform.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
re:pchar;
relong,i:integer;
begin
re:=nil;
while socket.ReceiveLength>0 do
begin
//申請記憶體
re:=AllocMem(socket.receivelength);
TRY
try
relong:=socket.ReceiveLength;
Socket.ReceiveBuf(re^,Socket.receivelength);
sBuf:=strpas(re);
Setlength(sbuf,relong);
//計算資料長度
TotalLen:=TotalLen+ relong;
Statusbar1.Panels.Items[1].Text:='接收: ' + IntToStr(TotalLen);
Statusbar1.Update();
except
end;
FINALLY
freemem(re);
END;
//Memo2.Lines.Add(sbuf);
Memo2.Text := sbuf;
// Socket.Close;
end;
if Copy(sbuf,1,5)='POS91'then
begin
M:=StrToInt(Copy(sbuf,10,2));
end;
if Copy(sbuf,1,5)='POS93'then
begin
M:=StrToInt(Copy(sbuf,10,2));
end;
這是發送資料的:
Self.SDMemberConsumptionPlaces('');
if Copy(_tempstr,1,5)='POS90'then
begin
if M='00' then
begin
Self.StatusBar1.Panels[3].Text:='成功';
end;
if M='01' then
begin
Application.MessageBox('所失敗,請檢查!','提示',mb_ok+mb_iconinformation);
Exit;
end;
end;
uj5u.com熱心網友回復:
下斷點,除錯轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97415.html
標籤:語言基礎/算法/系統設計
上一篇:idhttp的使用問題
