Einzelnen Beitrag anzeigen

Schuby

Registriert seit: 25. Dez 2018
102 Beiträge
 
#1

Daten abholen bei TCPClient

  Alt 2. Jan 2025, 10:06
Hallo, ich komme einfach nicht mehr weiter, über einen Timer kann
ich wunderschön meine Daten abholen. Da ich aber mehrere Strings
gesendet bekomme will ich warten bis alles da ist.

Über meine Procedure TForm1.ReadData; bekomme ich nichts ausgelesen.
Über Timer geht es, woran liegt das ?


mfg

Delphi-Quellcode:
{#######################################################}
{           Timer1  Interval 100                        }
{#######################################################}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    if not Form1.TCPClient.Connected = true then Exit;
    if Form1.TCPClient.IOHandler.InputBufferIsEmpty then Exit;
    rec_str:= Form1.TCPClient.IOHandler.ReadLn();
    edit10.Text:= edit10.Text + rec_str;
    Memo1.Lines.Add(rec_str);
end;

{#######################################################}
{           TCP auslesen                           }
{#######################################################}
Procedure TForm1.ReadData;
var StartTimeOut : Integer;
    tmp : String;
begin
  rec_str:= '';
  StartTimeOut := Gettickcount + 200; //200Ms bis zum ersten zeichen...
  while Gettickcount < StartTimeOut do
  begin
    if not Form1.TCPClient.IOHandler.InputBufferIsEmpty then
    begin
      tmp:= Form1.TCPClient.IOHandler.ReadLn();
      rec_str := rec_str + tmp;
      StartTimeOut := Gettickcount + 100; //100ms TimeOut erhöhung..
    end;
    application.processmessages; //Anti Freeze
  end;
  Memo1.Lines.Add(rec_str);
end;

Geändert von Schuby ( 2. Jan 2025 um 10:09 Uhr)
  Mit Zitat antworten Zitat