[Lazarus-es] una duda ...

Horacio Jamilis hjamilis en pymesoft.com.ar
Jue Jul 22 19:36:14 CEST 2010


Christian,

No es buena idea que llames al DESTROY de un objeto.
Como ya te dijeron, lo que deberías hacer es llamar directamente a

FullPanelPrincipal.Free

Por precaución, talvez sería bueno que en algún lugar anterior al primer 
uso de este objeto, le asignes nil, por ejemplo en la inicialización de 
la unidad... es decir, antes del end de la unidad, que pongas

initialization
   FullPanelPrincipal := nil;

y que finalmente lo destruyas cuando no lo uses más, lo que talvez 
tambien puedas hacer en la finalización de la unidad, con:

finalization
   FullPanelPrincipal.Free;

Si con estas aclaraciones no resuelves tu problema, debieras transcibir 
en forma COMPLETA el mensaje de error que recibes.

Atte,

Horacio

El 22/07/2010 14:21, christian Ortiz escribió:
> me explico un poco mejor:
>
> tego una clase, TFullpanelData que esta en la unit  FullData
>
> en mi nueva unit la tengo agregada en uses es decir:
>
> uses forms, ...., FullData;
>
> luego en public tengo
>
> FullDataPrincipal : TFullData;
>
> y en un procedimiento tengo:
>
> if  Assigned(FullPanelPrincipal) then
>                FullPanelPrincipal.Destroy();
>  FullPanelPrincipal := TfullpanelData.create();
>
> esto lo necesito ya que voy a lllamar a cada rato a ese mismo 
> procedimiento cargandolo con distintas opciones. Si no le pongo el 
> assigned, la1ra vez muetra correcto, pero la 2da, obviamnete me manda 
> un error, por lo q necesito detruirlo.
>
>
> El 22 de julio de 2010 12:09, José Mejuto <joshyfun en gmail.com 
> <mailto:joshyfun en gmail.com>> escribió:
>
>     Hello christian,
>
>     Thursday, July 22, 2010, 6:42:04 PM, you wrote:
>
>     cO> tenia un procedimiento dentro de una unidad de un form, que
>     creaba un objeto
>     cO> en tiempo de diseno, lo pase a otra unidad, puse las variables
>     en publica,
>     cO> pero ahora manda error en la funcion assigned, lo pone como un
>     acces
>     cO> violation
>     cO> *if*  *Assigned*(FullPanelPrincipal) *then*
>     cO>                FullPanelPrincipal.Destroy();
>     cO> FullPanelPrincipal *:=* TfullpanelData.create();
>
>     Si te da error en la linea de "Assigned" es que la información de
>     linea está mal, ya que assigned no puede fallar a manos que
>     "FullPanelPrincipal" sea una variable de la clase actual, y esta clase
>     no esté instanciada, esto es "Self" es o "nil" o inválido.
>
>     cO> manda error en el Assigned, y FullPanelPrncipal es una
>     variable public en la
>     cO> misma unidad
>
>     Por cierto:
>
>     if Assigned(FullPanelPrincipal) then FullPanelPrincipal.Destroy();
>
>     Es exactamente lo mismo que:
>
>     FullPanelPrincipal.Free;
>
>     --
>     Best regards,
>      José
>
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> -- 
> Christian
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>    





More information about the Lazarus-es mailing list