![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как назначить обработчик события сокету [D5, WinXP]
TButton © (2004-04-14 12:49:00)В продолжение предыдущей темы (закрыта). В порядке тренировки пишу прогу.
program Project1;
{$APPTYPE CONSOLE}
USES
SysUtils,
scktcomp;
procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
end;
VAR
gate: TServerSocket;
BEGIN
gate:=TServerSocket.Create(nil);
Writeln('Socket created.');
gate.Port:=7000;
gate.OnClientConnect:=ClientConnect;
Writeln('Socket initialized.');
gate.Open;
Writeln('Socket opened.');
gate.Free;
Writeln('Socket destroyed.');
Write('Press Enter'); Readln;
END.
компиляю. компилятор показывает на выделеную строку и говорит "[Error] Project1.dpr(17): Incompatible types: method pointer and regular procedure" я понимаю что как-то неправильно задекларировал процедуру, а как сделать это правильно никак не пойму.
VMcL (2004-04-14 13:25:00) [21]>>TButton © (14.04.04 12:49)
Или кул-хацкерский метод:
var
OnChegotoTam: TMethod;
...
OnChegotoTam.Code := @ClientConnect;
OnChegotoTam.Data := nil;
Gate.OnClientConnect := TSocketNotifyEvent(OnChegotoTam);
BlackTr (2004-04-14 13:10:00) [22]Создать обьект ?
type
TServer = class( TObject )
private
procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
end;
implementation
procedure TServer.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
...
end;
VAR
gate: TServerSocket;
srv:TServer;
BEGIN
srv:=TServer.Create;
gate:=TServerSocket.Create(nil);
Writeln('Socket created.');
gate.Port:=7000;
gate.OnClientConnect:=srv.ClientConnect;
Writeln('Socket initialized.');
gate.Open;
Writeln('Socket opened.');
gate.Free;
Writeln('Socket destroyed.');
Write('Press Enter'); Readln;
srv.Free;
END.
Хотя... Может есть еще решение ?