Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#2

AW: TCPClient.IOHandler.InputBufferIsEmpty

  Alt 5. Jan 2022, 16:29
Hmm..

Bei INDY gibt es doch IdTCPClient.IOHandler.InputBufferIsEmpty

Ich hab nen Testtool gefunden, dort frage ich per Timer nach JSON Daten ab:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  ReceivedText: string;
begin
  Timer1.Enabled := False;
  try
    with FIdTCPClient do
    begin
      if not Connected then Exit;
      // read any data in
      if IOHandler.InputBufferIsEmpty then
      begin
        IOHandler.CheckForDataOnSource(0);
        IOHandler.CheckForDisconnect;
        if IOHandler.InputBufferIsEmpty then Exit;
      end;

      // Wartet auf JSON...
      IOHandler.WaitFor('{', False);
      ReceivedText := IOHandler.WaitFor('}', True, True, IndyTextEncoding_UTF8);
      Memo1.Lines.Add(ReceivedText);

      // if not already, send streaming command
      if not FSentStreamCommand then
      begin
        IOHandler.WriteLn('?WATCH={"enable":true,"json":true}');
        FSentStreamCommand := True;
      end;
    end;
  finally
    if FIdTCPClient.Connected then
      Timer1.Enabled := True;
  end;
end;
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)

Geändert von HolgerX ( 5. Jan 2022 um 16:50 Uhr)
  Mit Zitat antworten Zitat