Вниз
Скачать: CL | DM;

Сохранение указателя на TIdContext в Indy10   Найти похожие ветки 

 
vers ©   (2005-07-23 02:37) [0]

Вот код:

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 02:41) [1]

Прошу прощения, не TIdTCPConnection, а TIdPeerThread в Indy9.


 
vers ©   (2005-07-23 13:17) [2]

Вопрос снимается: сам глупый :)
AContext.Connection.Socket.Write("1");
и

context:=AContext;
context.Connection.Socket.Write("1");

работают идентично.
PS: В исходнике наверху я немного ошибся с названиями переменных.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.029 c
2-1129215799
Fast2
2005-10-13 19:03
2005.11.06
Почему при выполнении пишет Transaction is active ?


14-1129106888
Андрей Жук
2005-10-12 12:48
2005.11.06
Нынешняя молодежь - самая образованная в истории человечества


2-1129059115
Кабан
2005-10-11 23:31
2005.11.06
Промогите разобраться ServerSocket1 и ClientSocket1


2-1129266306
Arkady
2005-10-14 09:05
2005.11.06
Вычисляемое поле


14-1128421476
Иг_Иг
2005-10-04 14:24
2005.11.06
Шахматисты !




   Наверх