Soy nuevo en Delphi, y he estado corriendo algunas pruebas para ver qué objeto las variables y la pila de las variables se inicializan a por defecto:¿Las variables delphi se inicializan con un valor predeterminado?
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Este es el comportamiento que estoy acostumbrado a otros idiomas , pero me pregunto si es seguro confiar en Delphi. Por ejemplo, me pregunto si podría depender de una configuración de compilador, o tal vez funcionar de manera diferente en diferentes máquinas. ¿Es normal confiar en los valores inicializados por defecto para los objetos, o establece explícitamente todas las variables de instancia en el constructor?
En cuanto a la pila (Procedimiento de nivel) las variables, mis pruebas están mostrando que no inicializado booleanos son verdaderas, son números enteros no inicializado 2129993264, y los objetos son sólo uninialized punteros no válidos (es decir, no nula). Supongo que la norma es establecer siempre las variables de nivel de procedimiento antes de acceder a ellos?
Dos notas: 1. Los registros no se inicializan. 2. Las variables de referencia contadas siempre se inicializan. !¡PERO! en una función que devuelve una cadena, 'Resultado' no se inicializa en una cadena vacía como es de esperar. Esto se debe a que 'Result' no es una var. Local Entonces, siempre hazlo: Resultado: = ''; – Ampere
también vea: [¿Qué variables se inicializan cuando está en Delphi?] (Http://stackoverflow.com/questions/861045/which-variables-are-initialized-when-in-delphi) – Ampere