Форум: "Сети";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизОбработчики событий у компонента TServerSocket Найти похожие ветки
← →
Ezorcist (2005-11-09 11:51) [0]Отчего такая пограмма вызывает ошибку при получении текста?:
procedure onr (Sender: TObject; Socket: TCustomWinSocket);
begin showmessage(socket.receivetext); end;
procedure TForm1.Button1Click(Sender: TObject);
var m:tmethod;
begin
my:=tserversocket.create(my);
my.Port:=1100;
my.Open;
m.Code:=@onr; m.Data:=nil;
my.OnClientRead:=TSocketNotifyEvent(m);
end;
← →
Digitman © (2005-11-09 12:49) [1]какую ?
← →
Ezorcist (2005-11-09 17:05) [2]Windows socket error: запрос на отправку или получение данных no address was supplied (10057), on API "recv"
← →
Digitman © (2005-11-10 08:22) [3]при выполнении какой конкретно строчки возникает ошибка ?
← →
seeker © (2005-11-10 09:29) [4]
procedure onr (dummy:pointer; Sender: TObject; Socket: TCustomWinSocket);
begin
showmessage(socket.receivetext);
end;
← →
Digitman © (2005-11-10 10:04) [5]а к чему эти выкрутасы с TMethod ?
класс у тебя есть (TForm1), ну так объяви и реализуй в нем полноценный метод-обработчик и назначь его св-ву TServerSocket.OnClientRead !
TForm1 = class(..)
..
procedure DoClientRead(Sender: TObject; Socket: TCustomWinSocket);
..
end;
procedure TForm1.DoClientRead;
begin
...
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
my:=tserversocket.create(my);
my.Port:=1100;
my.OnClientRead := DoClientRead;
my.Open;
end;
?
← →
seeker © (2005-11-10 11:04) [6]
> а к чему эти выкрутасы с TMethod ?
Дурная манера отвечать вопросом на вопрос.
Если кто-то что-то спрашивает, то наверно не просто так.
если Ezorcist знает про tmethod, то наверняка он знает и про то, что можно обработчику назначить метод формы, но его, видимо, это не устраивает.
← →
Digitman © (2005-11-10 11:28) [7]
> Дурная манера отвечать вопросом на вопрос
сначала научись задавать вопросы, потом будешь уже рассуждать про "дурные манеры"
> если Ezorcist знает про tmethod, то
.. то сначала Ezorcist должен определиться, что у него там на самом деле с параметрами творится - то ли есть dummy-параметр [4] то ли нет его [0] ..
без этого дальнейший разговор не имеет смысла
← →
seeker © (2005-11-10 11:43) [8]
> то ли есть dummy-параметр [4] то ли нет его [0] ..
Это не имеет никакого значения.
при
m.Code:=@onr; m.Data:=nil;
первым параметром в onr всегда будет пердаваться то что в Data, а уже затем все остальное.
в его случае получается:
Sender = Data = nil, а Socket = Sender.
← →
Digitman © (2005-11-10 11:51) [9]
> seeker © (10.11.05 11:43) [8]
> Это не имеет никакого значения
глубоко заблуждаешься.
Data - это вовсе не Sender
Значение Data будет записано в регистр ebx непосредственно перед вызовом процедуры-обработчика, и в случае если эта процедура-обработчик являет собой метод класса (а не регулярную процедуру, как в твоем случае) будет являть собой значение Self.
← →
seeker © (2005-11-10 14:42) [10]
> как в твоем случае
Не в моем случае.
> а не регулярную процедуру
сдесь расматривается именно регулярная процедура...
> Значение Data будет записано в регистр ebx непосредственно
> перед вызовом процедуры-обработчика, и в случае если эта
> процедура-обработчик являет собой метод класса
а, интересно, куда будет записано значение Data если эта процедура-обработчик регулярная процедура?
← →
Digitman © (2005-11-10 14:58) [11]
> Не в моем случае.
в твоем случае [4] это и есть РЕГУЛЯРНАЯ ПРОЦЕДУРА.
равно как и в [0] - она же.
> сдесь расматривается именно регулярная процедура
а то я не вижу)
> а, интересно, куда будет записано значение Data если эта
> процедура-обработчик регулярная процедура?
на кудыкину гору.
читай внимательно [9]:
Значение Data будет записано в регистр ebx непосредственно перед вызовом процедуры
← →
Ezorcist (2005-11-11 08:21) [12]Спасибо в любом случа, помогли.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c