Bien, básicamente es que toda "variable" objeto es, en realidad, una referencia a objeto.
Vamos:
var
MiSuperObjeto: TMiSuperObjeto;
Sería "como" poner
var
MiSuperObjeto: ^TMiSuperObjeto;
Son siempre punteros a objeto, mientras que el resto de tipos "primitivos" (real, entero, etc...), son el contenedor de un valor del tipo (vamos tienes la referencia y el espacio de memoria asociado).
De ahí viene que si no se le asigna un objeto a la variable, en realidad no estés apuntando a algún sitio valido.
Usea:
var
MiSuperObjeto: TMiSuperObjeto;
begin
MiSuperObject.SuperMetodo; // lanzará una violación en masa de los bits pares de la cpu.
Luego, si haces lo que cadetill indica, siempre pasas una referencia al objeto (y por lo tanto, operarás, realmente, con ese objeto).
|