![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OnClientRead у TServerSocket [D7, WinXP]
Ezorcist © (2006-04-24 08:03:00)В процессе работы программы создаю несколько TServerSocket, назначаю им один и тот же OnClientRead. Как обратиться к св-вам компонета, который вызвал OnClientRead? Писал TServerSocket(Sender) неверно, тк Sender это TServerWinSocket.
Ezorcist (2006-04-25 13:40:00) [1]Ну все-расно спасибо!
Сергей М. (2006-04-25 12:32:00) [2]
> Ezorcist (25.04.06 12:20) [6]
Ну да, конечно же
if TServerSocket(Components[i]) .Socket = Sender then
здесь ты прав.
> это долго как-то и не ловко( Нельзя как-то проще и изящней
Поэтому проктология и была упомянута.
А "попроще и поизящней" без переделки scktcomp.pas - никак.
Ezorcist (2006-04-25 12:20:00) [3]Ну это не страшная тайна просто проблема не в этом. Код в принципе подходит, только такой:
for i:= 0 to ComponentCount - 1 do
if Components[i] is TServerSocket then
if TServerSocket(Components[i]) .Socket = Senderthen
begin
ShowMessage(Components[i]).Name);
ShowMessage(IntToStr(TServerSocket(Components[i]).Tag));
break;
end;
Но это долго как-то и не ловко( Нельзя как-то проще и изящней ...
?
Сергей М. (2006-04-24 17:13:00) [4]Зачем ?
..
Ну раз это страшная тайна, то держи проктологический код:
for i:= 0 to ComponentCount - 1 do
if Components[i] is TServerSocket then
if TServerSocket(Components[i]) .Socket = Socket then
begin
ShowMessage(Components[i]).Name);
ShowMessage(IntToStr(TServerSocket(Components[i]).Tag));
break;
end;
Ezorcist (2006-04-24 17:07:00) [5]Мне нужно знать от какого именно клиента приняты данные и к какому именно серверу он подключен.
Сергей М. (2006-04-24 16:24:00) [6]А зачем, если не секрет ?
Я к тому, что м.б. не в ту сторону движешься, и конечная задача решается проще и изящней ...
Ezorcist (2006-04-24 16:22:00) [7]Name и Tag
Сергей М. (2006-04-24 08:29:00) [8]Какие конкретно св-ва нужно получить/установить при этом ?