Вниз
Скачать: 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 вся ветка

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



Память: 0.47 MB
Время: 0.028 c
2-1123684855
shu
2005-08-10 18:40
2005.09.18
TThread.Execute не вызывается


14-1125120486
Sergey Masloff
2005-08-27 09:28
2005.09.18
Проапгрейдить домашний комп.


3-1123222559
Бульбаш
2005-08-05 10:15
2005.09.18
Изменение курсора в процессе вставки...


14-1123755009
Slider007
2005-08-11 14:10
2005.09.18
Как сделать из WinXP - Windows Vista


1-1124867893
lehich
2005-08-24 11:18
2005.09.18
ProgressBar, который отрисовывает линейку програсса в Статусбаре




   Наверх