![]() |
¿Cómo saber si un objeto está ya creado?
Hola, tengo una clase con un método que me sirve para inicializarla, la clase tiene como atributos otros objetos:
y aunque funciona siempre me gustaría hacer algo así;
¿Cómo puedo saber si un objeto está ya creado? ¿Basta con hacer lo siguiente?
Saludos. |
Diría que con todos los objetos es los mismo, por ejemplo la clase TForm, que en este pequeño ejemplo seria FFacturar, si no está creado, pues lo crea y ya
if not Assigned(FFacturar) then FFacturar:=TFFacturar.Create(Self); Espero te sirva Un caluroso saludo desde BOGOTA - COLOMBIA |
|
¿Para liberar he de hacer FreeAndNil(miObjeto); en vez de Objeto.Destroy; o Objeto.Free? ¿No es lo mismo?
|
Bueno, si. El FreeAndNil, hace las dos cosas. Libera y apunta a nil.
Así te aseguras de que si porteriormente preguntas if Assigned() funcionará 100% :D:D:D |
Si creas un objeto y luego lo liberas, el puntero seguirá teniendo el valor que tenía.
Por lo tanto, cuando lo liberas, además deberías ponerlo a nil. Self.Atributo1 := cFoo.Create; // Self.Atributo=0192893 --- Self.Atributo1 := cFoo.Free; // Self.Atributo=0192893 --- FreeAndNil(Self.Atributo1); // Self.Atributo=nil |
Gracias, a partir de ahora utilizaré FreeAndNil en vez de llamar al método Free.
Saludos. |
| La franja horaria es GMT +2. Ahora son las 17:55:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi