[ pcb.izrada @ 30.07.2007. 08:14 ] @
Radim jednu konzolnu aplikaciju i sad da ne petljam previse sa winsockom, bilo bi mi puno jednostavnije koristit IdTCPServer komponentu, ali nikad nisam tako sta radio u konzolnim programima.

Vjerovatno je prvo dodam u uses ali ne kontam kako da podesim server (host, port) i kako da napravim neki command handler, tipa ovako nesto:


procedure TForm1.tcpIME_NEKE_KOMANDECommand(ASender: TIdCommand);
begin

end;

To se u vcl radi sa object inspectorom.... pozz
[ NemesisMMX @ 30.07.2007. 09:06 ] @
procedure YourClass.MethodHandler (ASender: TIdCommand);
begin
...
end;

constructor YourClass.Create;
begin
...
// FServer is field in YourClass or local var
FServer := TIDTcpServer.Create(self);

FServer.OnMethodHandler := MethodHandler;
...
end;
[ 0rc @ 30.07.2007. 09:32 ] @
Samo da dodam da treba da obratis paznju da ti se parametri event handler funkcije poklapaju sa ocekivanim.. Npr, za OnExecute event pisao bi nesto kao:
Code:

TMyClass.MyServerExecute(AContext: TIdContext);

a za OnException:
Code:

TMyClass.MyServerExeception(AContext:TIdContext; AException: Exception);

[ NemesisMMX @ 30.07.2007. 12:23 ] @
Event handleri su u Delphiju definisani kao procedure objekta:

type
TNotifyEvent = procedure (Sender: TObject) of object;

TSomeClass = class
FOnChange : TNotifyEvent;
property
OnChange: TNotifyEvent Read FOnChange Write FOnChange;
end;

Ne znam dal ti znaci nesto. U sustini, sa ovakvim handlerom mozes da povezes bilo koju proceduru koja je desinisana unutar klase i ima parametere (Sender: TObject).
I mene je to na pocetku zbunjivalo.
Sa druge strane imas recimo u TList klasi metod Sort koji zahteva cisto proceduralnu varijablu kao parametar. Tu funkcija NE SME da bude procedura objekta vec samo procedura inace nece da radi.