![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
указатели - 2
Novice © (2005-08-11 10:33:00)Здравствуйте еще раз!
Вчера задавал вопрос про указатели, подсказали, спасибо, предложили использовать вместо массива TObjectList.
Но, как оказалось, здесь та же проблема, а именно:
- я создаю объекты класса v1,v2: TMyClass;
- создаю объект списка objList: TObjectList;
- добавляю в него мои объекты v1 и v2 - objList.Add(v1); и v2 аналогично
Вопрос: как теперь по индексу элемента в objList добраться до содержимого полей моих объектов v1 и v2? (Напомню, цель всего этого такова: в процессе работы проги создаются и удаляются объекты типа v1 и v2, таких объектов много, и необходимо получать значения их полей как вручную, по имени конкретного объекта, так и автоматически, в цикле, перебором всех имеющихся.)
Digitman (2005-08-11 11:14:00) [1]
> Novice (11.08.05 11:00) [7]
если сильно мешает, поступи так
var obj: TMyClass; //лок.переменная
..
obj := TMyClass(vsyakaya.erunda);
obj .//здесь список ОБЯЗАН раскрыться !
Novice (2005-08-11 11:00:00) [2]> Вместо TMyClass(objlist[i]). ) надо TMyClass(objlist[i])).
> Точку не там ставишь.
:-) Я хоть и Novice, но не тупой :-)
Программа запускается и работает, хотя список и не раскрывается.
Я проверил:
TMyClass(). - раскрывается
TMyClass(vsyakayaerunda). - раскрывается
TMyClass(vsyakaya.erunda). - уже не раскрывается
если в скобках есть точка или квадратная скобка, то список не раскрывается. Так и должно быть?
begin...end (2005-08-11 10:56:00) [3]> ANB © (11.08.05 10:54) [5]
> надо TMyClass(objlist[i])).
Да ну?
ANB (2005-08-11 10:54:00) [4]
> Novice (11.08.05 10:46) [3]
Вместо TMyClass(objlist[i]). ) надо TMyClass(objlist[i])).
Точку не там ставишь.
begin...end (2005-08-11 10:50:00) [5]> Novice (11.08.05 10:46) [3]
> Так и должно быть?
Нет.
Novice (2005-08-11 10:46:00) [6]Да, действительно работает! Спасибо! Только почему-то не раскрывается список с доступными полями и методами (когда ставишь точку после TMyClass(objlist[i]). ) , приходится писать вручную по памяти. Так и должно быть?
Digitman (2005-08-11 10:42:00) [7]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 := ..;
begin...end (2005-08-11 10:38:00) [8]> Novice (11.08.05 10:33)
> как теперь по индексу элемента в objList добраться до
> содержимого полей моих объектов
TMyClass(objList[...]).FieldName