Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Непонятки с указателями   Найти похожие ветки 

 
jafar   (2004-05-30 22:21) [0]

Добрый день.
Господа, подскажите что я делаю не так.
Есть TList в котором я храню элементы класса TFacilityLink. Добавляю их в коллекцию так:

l := TFacilityLink.Create( imgSource.Canvas );
l.Source      := sourceModel.Generators[ i ];
l.Destination := selectedFacility;
sourceModel.links.Add( @l );

links - это и есть TList.
При попытке вызвать метод класса TFacilityLink вылетает Access Violation:

for i := 0 to model.links.Count - 1 do begin
   p := model.links.Items[ i ];
   PFacilityLink(p)^.Erase;  // тут ошибка
end;

Подскажите, как добиться нормального приведения типа и вызова метода моего класса?


 
Palladin ©   (2004-05-30 22:28) [1]

Что такое @? Это адрес по которому содержится значение переменной l. Таким образом ты все время добавляешь в список одно и тоже значение, которое после отработки процедуры в которой оно объявлено, теряет смысл ибо содержится в стеке. Идентификаторы объектов класса сами по себе являются указателями. Соответственно бессмыленное @l - заменяем на очень даже осмысленное Pointer(l);


 
Jel ©   (2004-05-30 22:30) [2]


> sourceModel.links.Add( @l );

Заменить на sourceModel.links.Add( pointer(l) );


 
jafar   (2004-05-30 22:51) [3]

Спасибо, все заработало.



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

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
6-1082877505
Daniel
2004-04-25 11:18
2004.06.13
Сокеты в Unix


3-1085379152
nitro
2004-05-24 10:12
2004.06.13
Как получить значение записи в таблице, на которой стоит курсор?


14-1085758294
Undert
2004-05-28 19:31
2004.06.13
По Mysql вопросик (из области PHP)


3-1085124326
inic
2004-05-21 11:25
2004.06.13
Отмена SQL запроса


1-1085590447
Step[B.M.]
2004-05-26 20:54
2004.06.13
Объединение нескольких документов Microsoft Word в один