type
TExceptionClass=class of Exception;
procedure asd(cls:TExceptionClass=[COLOR=Red]Exception[/COLOR]);
begin
...
end;
проблема с default value
Код:
В данной конструкции компилятору требуется конкретное значение (число). Оно действительно не меняется в течении работы программы, но может изменятся от запуска к запуску - его определяет загрузчик ОС. Поэтому на этапе компиляции компилятор не может его определить и именно это ему не нравится.
Потом её можно будет использовать везде, потому что данная ссылка на объект всегда будет расположена в одном и по одному и тому же адресу памяти
Типизированные константы дельфи сами по себе таковыми не являются - они больше похоже в этом смысле на readonly поля C# - т.е. являются переменными "только для чтения". Соответственно, они и инициализируются скорее всего не в compile-time, а в run-time.
Михаил, можно из твоей ситуации выйти следующим образом (немного кривоватым, может быть):
Код:
procedure asd(cls: TExceptionClass); overload;
begin
end;
procedure asd; overload;
begin
asd(Exception);
end;
begin
end;
procedure asd; overload;
begin
asd(Exception);
end;
я сделал проще, стандартное значение cls nil, а уже в процедуре проверяю и если передан nil, значит cls=Exception