PDA

Ver la Versión Completa : Como averiguar si una unit o datamodule ya está abierto


jjoliveras
20-06-2007, 10:42:30
Buenos días foreros.

Alguien podría decirme como averiguar si un datamodule o una unit ya están creadas para no volverlas a crear con el consiguiente problema de violaciones y demás.

Probé a ponerlo de la siguiente forma pero lo da siempre como que está abierto.


if UDMDatamodule = nil then
begin
lCreado := False;
UDMDatamodule := TUDMDatamodule.Create(self);
end;


Busqué en los foros pero no e visto que nadie tenga este problema, a lo que me lleva o que a nadie se le a planteado (cosa que dudo) o que seguramente soy un pardillo.

Gracias por vuestra ayuda.

Saludos.

gluglu
20-06-2007, 10:58:49
if not Assigned(UDMDatamodule) then
begin
UDMDatamodule := TUDMDatamodule.Create(self);
end;

Si liberas la memoria de un DataModule, o de cualquier otro Form, en tiempo de ejecución, en vez de Free deberías utilizar FreeAndNil, o adicionalmente al Free, asignarle Nil a dicho Form o DataModule.

Consulta al respecto este hilo (http://www.clubdelphi.com/foros/showthread.php?t=43546&highlight=assigned) por ejemplo.

ClNaU2 ;)

jjoliveras
20-06-2007, 11:28:56
Gracias por la respuesta y por la información adicional gluglu, me funciona bien.;)