Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Socket Komponente im XE4 <-> Indy TCPClient XE7

  Alt 26. Feb 2015, 21:50
Auf welches Objekt bezieht sich das Connected? Denn unerwartet ist, dass Connected so allein da steht. Wird das TCPClient Objekt über with angesprichen? Falls ja, dann muss auch IOHandler anstatt TCPClient.IOHandler kompilierbar sein.


Delphi-Quellcode:
if Connected then
    begin
      if Assigned(TCPClient.IOHandler) then
Daher wäre es hilfreich etwas mehr vom echten Code zu sehen.

Kommen die von der XE4 Komponente gesendeten Strings in allen drei Fällen auf dem Zielserver an?

Der Code für die XE7 Indy Komponente kann generell vereinfacht werden, da Connect eine Exception auslöst wird das anschliessende Abfragen von Connected nicht erreicht. (Der Code in dem das erste Connect ausgeführt wird ist auch im gezeigten Code nicht enthalten, es geht ja direkt mit if Connected los). Einige try - except können eingespart werden.

Der minimal notwendige Code wäre:

Delphi-Quellcode:
TCPClient := TIdTCPClient.Create;
try
  TCPClient.Host := AHost;
  TCPClient.Port := APort;
  try
    TCPClient.Connect;
    TCPClient.IOHandler.WriteLn(MyStr1);
    TCPClient.IOHandler.WriteLn(MyStr2);
    TCPClient.Disconnect;
  except
    on E: Exception do
    begin
      // log Exception
    end;
  end;
finally
  TCPClient.Free;
end;
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat