![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать класс несозданной переменной? [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;