![]() |
TClientSocket: Problem bei Eventzuweisung
Hi,
ich bin der Meinung, dass man nur dann eine GUI benötigt, wenn sie wirklich nötig ist, ansonsten tut es auch eine Konsolenanwendung. GUI: Client auf die Form, Port und Host eingestellt, am Ende noch Open aufgerufen und im OnConnect nachgefragt, ob die Verbindung geklappt hat. Kein Problem. Konsolenanwendung: Eigene Klasse erstellt, Events werden NICHT zugewiesen. Warum ?
Delphi-Quellcode:
type
TClient = class constructor Create; public Cli : TClientSocket; procedure ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); end; constructor TClient.Create; begin Cli := TClientSocket.Create(nil); with Cli do begin // Einstellungen Address := '209.85.129.104'; Port := 80; // Standardzuweisungen setzen OnConnect := ClientConnect; OnDisconnect := ClientDisconnect; OnError := ClientError; // Öffnen Open; end; end; procedure TClient.ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin if Socket.Connected then WriteLn('Verbindung erfolgreich') else WriteLn('Verbindung fehlgeschlagen'); end; |
Re: TClientSocket: Problem bei Eventzuweisung
Zitat:
|
Re: TClientSocket: Problem bei Eventzuweisung
Ok, aber warum werden sie nicht ausgelöst ? Sie müssten *eigentlich*.
|
Re: TClientSocket: Problem bei Eventzuweisung
Was fehlt dir denn? Also ich bekomme ein ErrorEvent=eeConnect in deine ClientError-Methode mit Errorlevel=10060.
Edit: Meine natürlich Errorcode :drunken: Edit2: Hey: Und mit deiner IP krieg ich sogar ein "Verbindung erfolgreich" (warum habe ich auch erst die IP verändert :wall: ) |
Re: TClientSocket: Problem bei Eventzuweisung
Hast du auch wirklich die Klasse genommen und erstellt ?
:twisted: Wieso funzt bei allen anderen immer alles und bei mir nicht :twisted: |
Re: TClientSocket: Problem bei Eventzuweisung
Na klar. Warte ich zeigs gleich. Muss ihn nur nochmal erstellen.
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE} uses windows,scktcomp; type TClient = class constructor Create; public Cli : TClientSocket; procedure ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket); // procedure ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); end; constructor TClient.Create; begin Cli := TClientSocket.Create(nil); with Cli do begin // Einstellungen Address := '209.85.129.104'; Port := 80; // Standardzuweisungen setzen OnConnect := ClientConnect; // OnDisconnect := ClientDisconnect; OnError := ClientError; // Öffnen Open; end; end; procedure Tclient.ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin writeln('Error: ',errorcode); end; procedure TClient.ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin if Socket.Connected then WriteLn('Verbindung erfolgreich') else WriteLn('Verbindung fehlgeschlagen'); end; var client:Tclient; msg:Tmsg; begin client:=tclient.create; while getmessage(msg,0,0,0) do dispatchmessage(msg); client.free; //kommt jetzt eh nie hierher ;-) end. |
Re: TClientSocket: Problem bei Eventzuweisung
Hm...es liegt definitiv an dieser Zeile:
Delphi-Quellcode:
Warum funktioniert es mit ihr, im Vergleich zu meiner ?
while getmessage(msg,0,0,0) do dispatchmessage(msg);
|
Re: TClientSocket: Problem bei Eventzuweisung
Ich kenne deine "Zeile" nicht.
Funktionieren ist etwas übertrieben, man muss wahrscheinlich daran noch etwas ändern, damit auch der Rest des Programmes weiterläuft. |
Re: TClientSocket: Problem bei Eventzuweisung
Delphi-Quellcode:
var Client : TClient;
line : String; begin WriteLn('blabla'); Client := TClient.Create; ReadLn(line); if line = '...' then begin // ... end else begin Client.Free; Exit; end; end. |
Re: TClientSocket: Problem bei Eventzuweisung
ReadLn auf der Konsole und Messageabarbeitung, geht zugleich nicht wirklich. Da musst du dir wahrscheinlich deine eigene Readln-Methode basteln.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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