Je suis nouveau dans Delphi, et j'ai effectué quelques tests pour voir à quoi les variables d'objet et de pile sont initialisées 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 auquel je suis habitué dans d'autres langues, mais je me demande s'il est prudent de s'y fier dans Delphi ? Par exemple, je me demande si cela ne dépend pas d'un paramètre du compilateur, ou si cela ne fonctionne pas différemment sur différentes machines. Est-il normal de se fier aux valeurs initialisées par défaut pour les objets, ou faut-il définir explicitement toutes les variables d'instance dans le constructeur ?
En ce qui concerne les variables de la pile (au niveau de la procédure), mes tests montrent que les booléens unitialisés sont vrais, les entiers unitialisés sont 2129993264, et les objets non initialisés sont juste des pointeurs invalides (c'est-à-dire pas nil). Je suppose que la norme est de toujours définir les variables de niveau procédure avant d'y accéder ?
4 votes
Deux remarques : 1. Les enregistrements ne sont pas initialisés. 2. Les variables comptées par référence sont toujours initialisées. MAIS ! dans une fonction qui renvoie une chaîne de caractères, 'Resultat' n'est pas initialisé à une chaîne vide comme on pourrait s'y attendre, car 'Resultat' n'est pas une variable locale. C'est parce que 'Resultat' n'est pas une variable locale. Donc, il faut toujours faire : Resultat:= '' ;
0 votes
Voir aussi : Quelles variables sont initialisées dans Delphi ?
0 votes
Cela répond-il à votre question ? Quelles variables sont initialisées dans Delphi ?