Hmm, mio forte preferenza è per const AFilename: String;
Per la ragione che soprattutto per i progetti più grandi, se mai bisogno di aggiungere il codice sorgente da un altro programmatore, se non ha mai un sacco di tipi personalizzati come TCustomerID, THashValue, TInterestRate, invece di Integer, Cardinal, Double, quindi hai un sacco di E2033 da risolvere.
Anche un sacco di Delphi costruito nel codice sorgente non usa TFileName, come:
function MatchesMask(const Filename, Mask: string): Boolean;
Inoltre se ho una variabile definita come AFileName: TFileName;
allora la sua evidente il suo nome di un file & il tipo di nome non aggiunge qualsiasi leggibilità per me, se mai, in alcuni casi, rende il codice meno leggibile, perché è necessario fare clic per verificare da quale variabile è derivata.