Je suis nouveau à Delphes, et je l'ai couru quelques tests pour voir quelles sont les variables objet et pile variables sont initialisées par défaut:Les variables delphi sont-elles initialisées avec une valeur par défaut?
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
C'est le comportement que je suis habitué à d'autres langues , mais je me demande s'il est sûr de s'en fier Delphi? Par exemple, je me demande si cela pourrait dépendre d'un réglage du compilateur, ou peut-être travailler différemment sur des machines différentes. Est-il normal de s'appuyer sur des valeurs initialisées par défaut pour les objets, ou définissez-vous explicitement toutes les variables d'instance dans le constructeur? Comme pour les variables de pile (niveau de procédure), mes tests montrent que les booléens unitialisés sont vrais, les entiers unitalisés sont 2129993264 et les objets non numérisés sont juste des pointeurs invalides (c'est-à-dire non nul). Je suppose que la norme est de toujours définir les variables au niveau de la procédure avant d'y accéder?
Deux notes: 1. Les dossiers ne sont pas initialisés. 2. Les variables comptées de référence sont toujours initialisées. !MAIS! Dans une fonction qui renvoie une chaîne, 'Result' n'est pas initialisé en chaîne vide comme vous pouvez vous y attendre. C'est parce que 'Result' n'est pas une variable locale. Alors, faites toujours: Résultat: = ''; – Ampere
voir aussi: [Quelles variables sont initialisées en Delphi?] (Http://stackoverflow.com/questions/861045/which-variables-are-initialized-when-in-delphi) – Ampere