Как получить значение по умолчанию TRTTIParamter - PullRequest
6 голосов
/ 26 февраля 2012

У меня есть этот класс:

TMyClass = class
public
  function DoSomethingNice(const Value: string = 'Yes please!'): Boolean;
end;

Теперь, используя RTTI, возможно ли получить значение по умолчанию параметра Значение метода DoSomethingNice ?если да, то как?

Меня больше всего интересует решение D2010, но XE тоже подойдет.

1 Ответ

12 голосов
/ 26 февраля 2012

невозможно, так как RTTI не имеет информации о параметрах по умолчанию. значения параметров по умолчанию используются только во время компиляции

итак, если у нас есть ... procedure test(x : integer = 3) а затем вызвать метод без значения параметра: test() тогда он будет скомпилирован как test(3)

чтобы проверить это, вы можете открыть окно CPU в отладчике: и test() выглядит как

 mov  eax, $00000003
 call test
...