Funktionen zu Events manuell zuweisen !?
-
moin,
ich schreibe einen chat server als Konsolenanwendung (hab also keinen Object Inspector zur verfügung)
Jetzt muss ich z.B. dem event OnClientError eine Funktion zuweisen.
wie mache ich das??
ich hab da ma was ausprobiert (wahrscheinlich schwachsinn ^^):...
void __fastcall SocketError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { // tu was }...
// Funktion zuweisen server->OnClientError=SocketError;...
erhalte aber dann den Error:
**[C++ Error] Unit1.cpp(39): E2034 Cannot convert 'void (_fastcall *)(TObject *,TCustomWinSocket *,TErrorEvent,int &)' to 'void (_fastcall * (_closure )(TObject *,TCustomWinSocket *,TErrorEvent,int &))(TObject ,TCustomWinSocket ,TErrorEvent,int &)'kann einer bitte den code so berichtigen, dass es funtzt?
-
SocketError muss ein Klassenmember sein...
-
das heißt??? ...



was soll ich denn jetzt tun?
-
Also ich hab ma sowas gemacht:
class TServer { public: void __fastcall SocketError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent,int &ErrorCode); void __fastcall ClientConnect(TObject *Sender, TCustomWinSocket *Socket); void __fastcall ClientDisConnect(TObject *Sender, TCustomWinSocket *Socket); void __fastcall print(AnsiString txt); }; void __fastcall TServer::print(AnsiString txt){ txt=txt+"\r\n"; cprintf(txt.c_str()); } void __fastcall TServer::SocketError(TObject *Sender,TCustomWinSocket *Socket, TErrorEvent ErrorEvent,int &ErrorCode){ print(" ***Error: Code "+AnsiString(ErrorCode)); } void __fastcall TServer::ClientConnect(TObject *Sender,TCustomWinSocket *Socket){ print(" ***Client Connected ("+Socket->RemoteAddress+") at "+Now()); } void __fastcall TServer::ClientDisConnect(TObject *Sender,TCustomWinSocket *Socket){ print(" ***Client Disconnected ("+Socket->RemoteAddress+") at "+Now()); } TServer *Server1;TServerSocket *server=new TServerSocket(NULL); // ich weiss net ob NULL richtig is, also bitte bescheid sagen, wenn net server->Port=37015; server->OnClientError=Server1->SocketError; server->OnClientConnect=Server1->ClientConnect; server->OnClientDisconnect=Server1->ClientDisConnect; server->Active=true;die Event-Funktionen werden aber net ausgeführt!
