Где инициализируется запись TPath из System.IOUtils? - PullRequest
5 голосов
/ 31 января 2012

Запись TPath имеет конструктор класса TPath.Create, который инициализирует переменные класса.Но я не могу найти ни одного модуля, в котором TPath.Create используется / называется dispite, все переменные имеют правильные значения (TPath.PathSeparator, ...).

1 Ответ

10 голосов
/ 31 января 2012

Конструкторы классов вызываются автоматически кодом инициализации, который создает Delphi.Конструкторы классов вызываются в секции инициализации модуля, в котором они объявлены.

Более подробно это описано в документации :

Класс AКонструктор - это специальный метод класса, который недоступен для разработчиков.Вызовы конструкторам классов автоматически вставляются компилятором в раздел инициализации модуля, в котором определен класс.Обычно конструкторы класса используются для инициализации статических полей класса или для выполнения типа инициализации, который требуется перед тем, как класс или любой экземпляр класса сможет функционировать должным образом.Даже если тот же результат можно получить, поместив код инициализации класса в раздел инициализации, конструкторы классов могут помочь компилятору решить, какие классы следует включить в конечный двоичный файл, а какие удалить из него.

Вы можете видеть, что это так, включив отладку DCU, а затем установив точку останова для кода в конструкторе класса.

...