Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как назначить обработчик события сокету [D5, WinXP]


Страницы:   1 2

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.

Хотя... Может есть еще решение ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо