Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Как узнать тип элемента в списке TList   Найти похожие ветки 

 
TGrey ©   (2003-10-12 14:16) [0]

Имеется список указателей типа TList, в него добавляются объекты различных типов. Как при извлечении объекта определить его тип? Это нужно для того, чтобы преобразовать извлекаемый объект к нужному типу.


 
Palladin ©   (2003-10-12 14:29) [1]

операторы is и as


 
TGrey ©   (2003-10-12 17:00) [2]


List:TList;

как сделать следующее условие:

если list.Items[0] равно TMyObject то ...


 
Palladin ©   (2003-10-12 17:10) [3]

ни как не сделать...

если ты хранишь все в перемешку тоесть как и pointer так и объекты классов, то решение возможно лишь при определенном добавлении в TList

что то вроде

Type
PUnknownData=^TUnknownData;
TUnknownData=record
IsThisObject:boolean;
Data:pointer;
end;
формировать эту структуру и заносить в TList

и естественно, если ты еще хранишь указатели и на разные структуры то тут тебе ничем не помочь... только в явном указании какая именно структура хранится в TList, то есть еще расширить

Type
PUnknownData=^TUnknownData;
TUnknownData=record
DataKind:integer;
Data:pointer;
end;

обозначить все свои хранимые в TList стурктуры константами и в зависимости от значения DataKind соответственно обрабатывать ссылку Data


 
Гаврила   (2003-10-12 18:24) [4]

if TObject(List[0]) is TMyObject then


 
Гаврила   (2003-10-12 18:26) [5]

Разумеется, если там только эккземпляры классов ,если там могут быть и указатели не на экземпляр, то Palladin © (12.10.03 17:10) [3]


 
TGrey ©   (2003-10-12 19:00) [6]

у Гаврила всё работает, я вот ещё что придумал:

procedure TForm1.Button1Click(Sender: TObject);
var
ClassRef: TClass;
begin
if list.Count > 0 then
begin
ClassRef:=TObject(list.Items[0]).ClassType;
if ClassRef.ClassName = "TMyObject" then
begin
ShowMessage(ClassRef.ClassName);
end
else ShowMessage("TMyObject2");
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-74117
Eagle Owl
2003-10-11 17:41
2003.10.23
Определение состояния бита


7-74503
avkiev
2003-08-07 13:50
2003.10.23
Изменение функции FileSetAttr


1-74284
romeo
2003-10-13 00:52
2003.10.23
Как запихать координаты точки в lParam для WM_LButtonDown?


9-73963
Shatalka_o
2003-04-18 11:51
2003.10.23
У кого есть исходники трехмерной графики?


3-74069
Jaxtor
2003-10-02 12:30
2003.10.23
Определение номеров страниц в QuickReport