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;