Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: TIdTCPClient: Eingehende Verbindung

  Alt 14. Sep 2008, 10:53
also ich hab mir das so gemacht: ich habe ein object von typ TIdTCPClient abgeleitet und darin ein object, welches von einer thread-klasse abgeleitet ist, instanziiert. bei der onexecute-methode des thread-objects habe ich dann den IOHandler des TIdTCPClient-Object angesprochen und geschaut, ob daten vorhanden sind. das kannst du so abfragen
Delphi-Quellcode:
var
  cmd : String;
{ ... }
// Aktuellen Puffer lesen
cmd := tcpClient.IOHandler.Readln();
// Prüfen, ob Daten angekommen sind
if (cmd <> '') then
begin

  { Hier musst du noch auf die eingehenden Daten reagieren. }

end;
auf die eingehenden daten reagiere ich wie folgt. ich leite diese eben an die nächst "höhere" instanz weiter, bei der eben eine entsprechende methode definiert sein muss.
Delphi-Quellcode:
TOnRecieve = procedure(aStr: String) of object;
TReadThread = class(TThread)
private
  { ...}
  FOnRecieve : TOnRecieve;
protexted
  procedure Execute(); override;
public
  { ... }
  property OnRecieve : TOnRecieve read FOnRecieve write FOnRecieve;
end;

{ WICHTIG: Anpassen der OnExecute }
proceudre TReadThread.Execute();
var
  cmd : String;
begin

  { ... }
  // Aktuellen Puffer lesen
  cmd := tcpClient.IOHandler.Readln();
  // Prüfen, ob Daten angekommen sind
  if (cmd <> '') then
  begin
    // Eingehende Daten weiterleiten
    if (Assigned(FOnRecieve)) then
      FOnRecieve(cmd);
  end;

  { ... }
end;
vielleicht hilft dir das ja ein bisschen
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat