Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Вниз

RTTI при использовании динамических объектов 


Death Soul   (2002-04-01 22:22) [0]

Есть след. стуктуры:

Type

PShape = ^TShape;
TShape = Class (TObject)
...
End;

PRectangle = ^TRectangle;
TRectangle = Class (TShape)
...
End;

PTriangle = ^TTriangle;
TTriangle = Class (TShape)
...
End;

Далее имеется контейнер указателей

List : TList;

В него заносим через указатель P : POINTER различные элементы
Rectangle : PRectangle и Triangle : PTriangle. Потом через базовый указатель Shape : PShape пытаемся их растипизироать и "вытащить".

ВОПРОС :

КАК БЕЗ ИСПОЛЬЗОВАНИЯ P : POINTER ПЕРЕПРИСВОИТЬ УКАЗАТЕЛИ И ПОЛУЧИТЬ ДОСТУП К ПОЛЯМ И МЕТОДАМ ОБЪЕКТА

Rectangle := Shape
или
Triangle := Shape

ГДЕ ЗАРАНЕЕ ИЗВЕСТНО, ЧТО Shape СОДЕРЖИТ УКАЗАТЕЛЬ НА Rectangle или Triangle;

Заранее СПАСИБО !!!



vuk   (2002-04-01 22:45) [1]

А зачем использовать конструкцию типа PShape = ^TShape;? Для "старых" объектных типов это еще подходит, но для классов переменная и так будет указателем, поэтому все это лишнее. В данном случае все делается гораздо проще.

var
List : TList; //можно TObjectList


List := TList.Create;
List.Add( TRectangle.Create(...));
...
List.Add( TTriangle.Create(...));

пример перебора (с использованием проверки типа через IS)
for i := 0 to List.Count - 1 do
if TObject(List[i]) is TRectangle then ...
else
if TObject(List[i]) is TTriangle then ...;





Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.03 c
1-46374           koks                  2002-04-01 10:45  2002.04.15  
StringGrid ;((


4-46544           Romul                 2002-02-14 12:14  2002.04.15  
Как проверить свернуто ли окно


1-46346           ArmArt                2002-04-03 23:34  2002.04.15  
Как сделать Экспорт Quick Report в Excel


1-46369           Gonza                 2002-04-03 16:19  2002.04.15  
Просмотр pdf БЕЗ использования Acrobat Reader?


4-46541           Poirot                2002-02-07 02:54  2002.04.15  
Как вставить в системное меню POPUP....