![]() |
lNet unter Freepascal/Lazarus: Disconnect nach SendMessage
Hi,
ich habe ein Problem. Ich habe eine TLTCPComponent komponente, "Client" genannt. Folgender Code:
Code:
Der Server bestätigt die Verbindung nach dem Connect. Danach sollte er den Text "SomeText" erhalten. Er hält allerdings einen Leerstring und dann einen Disconnect vom Client.procedure TForm1.Create(Sender: TObject); begin Client.Connect(ServerIP, Port); //ServerIP and Port are given... Client.SendMessage('SomeText'); end; Wenn ich folgendes schreibe:
Code:
Geht es. Mit dem Formularaufbau wird der Client connected. Dann kann ich die SendMessage per Button ausführen und alles ist ok - richtiger Text gesendet und weiterhin offene Verbindung.procedure TForm1.Create(Sender: TObject); begin Client.Connect(ServerIP, Port); //ServerIP and Port are given... end; procedure TForm1.Button1Click(Sender: TObject); begin Client.SendMessage('SomeText'); end; Meine Frage: Warum gehen die beiden Befehle nicht direkt hintereinander, aber wenn ich den einen als ButtonClick auslagere, funktioniert es? Gruß und Dank, Yhorcal |
AW: lNet unter Freepascal/Lazarus: Disconnect nach SendMessage
Die Lösung:
Das SendMessage kommt zu schnell. Es sollte besser bei OnConnect aufgerufen werden. |
AW: lNet unter Freepascal/Lazarus: Disconnect nach SendMessage
Zur Erklärung:
Delphi-Quellcode:
muss ja erst die Verbindung zum Client aufbauen. Dafür trägt sich der LCL-Teil von lNet in die Nachrichtenbehandlung der LCL ein (im nicht-LCL Fall müsste man
Connect
Delphi-Quellcode:
aufrufen). Bevor du nun also etwas verschicken kannst, muss ersteinmal wieder die Nachrichtenbehandlung ne Chance bekommen zu laufen, sprich dein
CallAction
Delphi-Quellcode:
-Handler muss verlassen werden; alternativ könntest du auch mal einen Aufruf von
OnCreate
Delphi-Quellcode:
zwischen
Application.ProcessMessages
Delphi-Quellcode:
und
Connect
Delphi-Quellcode:
ausprobieren, wobei
SendMessage
Delphi-Quellcode:
auf jeden Fall der saubere Weg ist, da du so sicher sein kannst, dass die Verbindung wirklich zustande kam. :)
OnConnect
Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz