Главная страница
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.03 c
8-1111582187
Comrade
2005-03-23 15:49
2005.09.18
Mediaplayer


3-1123135114
kreyl
2005-08-04 09:58
2005.09.18
Как заполнить таблицу числами от 1 до 80?


14-1124977560
OldNaum
2005-08-25 17:46
2005.09.18
Новоуральск )


4-1122537737
chili
2005-07-28 12:02
2005.09.18
Изменение частоты обновления экрана ?


8-1114973295
MxQ
2005-05-01 22:48
2005.09.18
Векторная карта