Вниз
Скачать: 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.024 c
1-1124966064
ArtemESC
2005-08-25 14:34
2005.09.18
C++ в Delphi


14-1124958106
Cosinus
2005-08-25 12:21
2005.09.18
Помогите с решением тригонометрического уравнения...


2-1123783327
Гость22
2005-08-11 22:02
2005.09.18
Как узнать номер текущей запись в Table1?


14-1124180221
i-s-v
2005-08-16 12:17
2005.09.18
USB


4-1122316917
Aldaris
2005-07-25 22:41
2005.09.18
Общий доступ к папке




   Наверх