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

Вниз

указатели - 2   Найти похожие ветки 

 
Novice   (2005-08-11 10:33) [0]

Здравствуйте еще раз!
Вчера задавал вопрос про указатели, подсказали, спасибо, предложили использовать вместо массива TObjectList.
Но, как оказалось, здесь та же проблема, а именно:

- я создаю объекты класса v1,v2: TMyClass;
- создаю объект списка objList: TObjectList;
- добавляю в него мои объекты v1 и v2 - objList.Add(v1); и v2 аналогично

Вопрос: как теперь по индексу элемента в objList добраться до содержимого полей моих объектов v1 и v2? (Напомню, цель всего этого такова: в процессе работы проги создаются и удаляются объекты типа v1 и v2, таких объектов много, и необходимо получать значения их полей как вручную, по имени конкретного объекта, так и автоматически, в цикле, перебором всех имеющихся.)


 
begin...end ©   (2005-08-11 10:38) [1]

> Novice   (11.08.05 10:33)

> как теперь по индексу элемента в objList добраться до
> содержимого полей моих объектов

TMyClass(objList[...]).FieldName


 
Digitman ©   (2005-08-11 10:42) [2]

var

 i, i1, i2: Integer;

..

 i1 := objList.Add(TMyClass.Create(..));
 i2 := objList.Add(TMyClass.Create(..));

..

//"вручную"
 TMyClass(objlist[i1]).SomeFieldOfTMyClassObject := ..;
 TMyClass(objlist[i2]).SomeOtherFieldOfTMyClassObject := ..;

..
//в цикле
 for i :=0 to objlist.Count - 1 do
  TMyClass(objlist[i]).SomeProperty := ..;


 
Novice   (2005-08-11 10:46) [3]

Да, действительно работает! Спасибо! Только почему-то не раскрывается список с доступными полями и методами (когда ставишь точку после TMyClass(objlist[i]). ) , приходится писать вручную по памяти. Так и должно быть?


 
begin...end ©   (2005-08-11 10:50) [4]

> Novice   (11.08.05 10:46) [3]

> Так и должно быть?

Нет.


 
ANB ©   (2005-08-11 10:54) [5]


> Novice   (11.08.05 10:46) [3]

Вместо TMyClass(objlist[i]). ) надо TMyClass(objlist[i])).
Точку не там ставишь.


 
begin...end ©   (2005-08-11 10:56) [6]

> ANB ©   (11.08.05 10:54) [5]

> надо TMyClass(objlist[i])).

Да ну?


 
Novice   (2005-08-11 11:00) [7]

> Вместо TMyClass(objlist[i]). ) надо TMyClass(objlist[i])).
> Точку не там ставишь.

:-) Я хоть и Novice, но не тупой :-)

Программа запускается и работает, хотя список и не раскрывается.
Я проверил:
 TMyClass().  - раскрывается
 TMyClass(vsyakayaerunda).  - раскрывается
 TMyClass(vsyakaya.erunda).  - уже не раскрывается
если в скобках есть точка или квадратная скобка, то список не раскрывается. Так и должно быть?


 
Digitman ©   (2005-08-11 11:14) [8]


> Novice   (11.08.05 11:00) [7]


если сильно мешает, поступи так

var obj: TMyClass; //лок.переменная

..

 obj := TMyClass(vsyakaya.erunda);
 obj. //здесь список ОБЯЗАН раскрыться !



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

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

Наверх




Память: 0.48 MB
Время: 0.038 c
14-1124883282
КаПиБаРа
2005-08-24 15:34
2005.09.18
Актуальные проблемы в сфере разработки ПО


14-1124297005
NewWonder
2005-08-17 20:43
2005.09.18
Зацените систему управления CD-ROM ом


3-1123501238
Aleksandr.
2005-08-08 15:40
2005.09.18
В чем проблема обращения к TPFibDataBase по указателю в Dll?


1-1125236306
X-shadow
2005-08-28 17:38
2005.09.18
Модульность программы


8-1115292435
TS
2005-05-05 15:27
2005.09.18
Конвертация BMP to JPEG