![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение указателя на TIdContext в Indy10 [D7, WinXP]
vers © (2005-07-23 02:37:00)Вот код:
procedure ConnectProc(AContext:TIdContext);
var
context:TIdContext;
context2:TIdContext;
begin
Label1.Caption:=IntToStr(LongInt(@AContext));
socket:=TIdContext(@AContext);
Label2.Caption:=IntToStr(LongInt(@socket));
socket:=AContext;
Label3.Caption:=IntToStr(LongInt(@socket));
socket2:=socket;
Label4.Caption:=IntToStr(LongInt(@socket2));
end;
В результате: содержимое второго и третьего Label'ов одинаковые, остальные - разные. Получается, при каждом присваивании переменной типа TIdContext, присваивается не она, а какая-то чушь? Или я чего-то не понимаю (что вероятнее всего)?
Этот вопрос возник при перенесении кода из Indy9 в Indy10. Программа сохраняет указатели на все пользовательские соединения к IdTCPServer'у. Раньше это было TIdTCPConnection, теперь TIdContext. Но в случае с TIdTCPConnection указатели не менялись при присваивании.
vers (2005-07-23 13:17:00) [1]Вопрос снимается: сам глупый :)
AContext.Connection.Socket.Write('1');
и
context:=AContext;
context.Connection.Socket.Write('1');
работают идентично.
PS: В исходнике наверху я немного ошибся с названиями переменных.
vers (2005-07-23 02:41:00) [2]Прошу прощения, не TIdTCPConnection, а TIdPeerThread в Indy9.