PDA

Ver la Versión Completa : Assigned y Free


gluglu
14-05-2007, 20:40:52
Hola compañeros !

Por qué después de hacer un Free de un form, la pregunta de Assigned vuelve a dar true ?

MiForm.Free;
...
if Assigned(MiForm) then
'Pasa por aquí y es verdadero' !

Debo utilizar alguna otra pregunta diferente del Assigned ?

Gracias por vuestra ayuda :o

dec
14-05-2007, 20:45:51
Hola,

Depende... pero a veces puede ser útil usar "FreeAndNil" en lugar de "Free". Creo que por ahí pueden ir los tiros aquí. La variable "MiForm", en este caso, apunta a "algo" que tal vez es sólo basura en la memoria, desde luego no será al objeto... que ha sido liberado. Pero si a la variable "MiForm" le asignas el valor "nil",... entonces "Assigned" no debería retornar "true"... si no estoy equivocado. :)

roman
14-05-2007, 20:46:33
Porque Assigned únicamente revisa si la variable tiene el valor nil y Free destruye el objeto pero no pone en nil a la variable; lo cual es lógico pues ni siquiera puede saber cuál o cuáles variables hacen referencia a él. En su lugar, puedes usar FreeAndNil(Objeto).

// Saludos

dec
14-05-2007, 20:48:28
Hola,

Bueno, sin duda, la respuesta de Román, en dos líneas, parece más razonable y desde luego es más clara que la mía, la cual si me pongo con ella de nuevo tal vez revisaría, luego de leer lo que Román ha dicho. O sea. :)

gluglu
14-05-2007, 21:03:37
Muchas gracias a los dos.

Como siempre vuestra ayuda es fabulosa ! :p