Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-07

una duda ...

5 messages · 3 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

christian Ortiz

tenia un procedimiento dentro de una unidad de un form, que creaba un objeto en tiempo de diseno, lo pase a otra unidad, puse las variables en publica, pero ahora manda error en la funcion assigned, lo pone como un acces violation

*if*  *Assigned*(FullPanelPrincipal) *then*
               FullPanelPrincipal.Destroy();
FullPanelPrincipal *:=* TfullpanelData.create();

manda error en el Assigned, y FullPanelPrncipal es una variable public en la misma unidad

alguna idea?

Christian ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100722/6bd5fe68/attachment.html>

Reply by email

José Mejuto
to christian Ortiz

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�

Reply by email

christian Ortiz
to José Mejuto

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> escribi�:

Show quoted text 41 lines
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 http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Christian ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100722/4b27a629/attachment-0001.html>

Reply by email

Horacio Jamilis
to christian Ortiz

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�:

Show quoted text 82 lines
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

Reply by email

christian Ortiz
to christian Ortiz: me explico un poco mejor: tego una clase, TFullpanelData que esta en la unit FullData en…

i estoy probando y me doy cuenta que si solo hago

TfullData.create() funciona, pero cuando asigno es donde me da el error, como si fuera readONly

El 22 de julio de 2010 12:21, christian Ortiz <xortix en gmail.com> escribi�:

Show quoted text 74 lines
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> 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 > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > -- Christian
Christian ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100722/9e7713ad/attachment.html>

Reply by email