Главная страница
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.47 MB
Время: 0.028 c
1-74207
RomanB
2003-10-07 16:45
2003.10.23
VBA: For each CollectionItem in Collection. Delphi: ?


1-74244
MMF
2003-10-13 13:07
2003.10.23
переопределение событий ActiveDocument


14-74403
isko
2003-10-06 08:28
2003.10.23
найдёшь или нет


1-74178
Berezne
2003-10-13 17:42
2003.10.23
Ячейки в DBGrid


6-74354
Infinity1
2003-08-25 20:46
2003.10.23
Использование TWebBrowser