Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать класс несозданной переменной? [D6, Win95/98]


Igorek ©   (2003-02-10 15:16:00) 


procedure CreateAll(var Objects: array of TObject);
var
I: Integer;
begin
for I := Low(Objects) to High(Objects) do
Objects[I].ClassType.Create;//Error - ClassType не классовый метод
//здесь надо узнать класс переменной, под которым она
//обьявлена где-то в другом месте
end;

procedure f1;
var
Tmp: TSomeType;
begin
f2(Tmp);
end;


Наверное нельзя, так как переменная равна nil и только это передается. Но все равно, может есть способ обойти?

Также надо наверно передавать массив ссылок, а это наверно не одно и то же, что ссылка на массив.

Спасибо.


Igorek   (2003-02-10 16:40:00) [1]

Пропадает весь прикол, который состоит в том, что бы можно было вызвать CreateAll([Var1, Var2 ... VarN])

FreeAll(array of TObject) нормально работает.


Igorek   (2003-02-10 16:33:00) [2]


> REA © (10.02.03 16:28)

т.е.
procedure CreateAll(
Types: array of TClass;
Objects: array of TObject);
?


REA   (2003-02-10 16:28:00) [3]

Передавай метаклассы: Array Of TClass, а объекты добавляй в списочек или массив.


Igorek   (2003-02-10 15:17:00) [4]

Вызов конечно же:
procedure f1;
var
Tmp: TSomeType;
begin
f2([Tmp]);
end;



Наверх

Титульная страница Поиск, карта сайта Написать письмо