Il record TPath include il costruttore di classi TPath.Create che inizializza le classi vars. Ma, non riesco a trovare alcuna unità in cui TPath.Create viene utilizzato/chiamato dispite questo tutti vars ha valori corretti (TPath.PathSeparator, ...).Dove viene effettuato il record TPath da System.IOUtils inizializzato?
risposta
I costruttori di classe sono chiamati automaticamente dal codice di inizializzazione prodotto da Delphi. I costruttori di classi vengono chiamati durante la sezione di inizializzazione dell'unità in cui sono dichiarati.
Questo è descritto in maggior dettaglio nel documentation:
Un costruttore di classe è un metodo speciale che non è accessibile agli sviluppatori. Le chiamate ai costruttori di classi vengono inserite automaticamente dal compilatore nella sezione di inizializzazione dell'unità in cui è definita la classe. Normalmente, i costruttori di classi vengono utilizzati per inizializzare i campi statici della classe o per eseguire un tipo di inizializzazione, che è necessario prima che la classe o qualsiasi istanza di classe possa funzionare correttamente. Anche se lo stesso risultato può essere ottenuto posizionando il codice di inizializzazione della classe nella sezione di inizializzazione, i costruttori di classi hanno il vantaggio di aiutare il compilatore a decidere quali classi devono essere incluse nel file binario finale e quali devono essere rimosse da esso.
Si può vedere che è così abilitando Debug DCUs e quindi impostando un breakpoint sul codice nel costruttore della classe.
Grazie! Ancora una volta qualcosa di nuovo e utile, almeno per me. – Branko