Pessoal,
Notei que o método End() não destroi o componente... Para destruir tenho que
atribuir o valor NIL... Isso é algum bug?
Exemplo:
oBotao:=TButton():New()
oBotao:cText:='TESTE'
oBotao:End()
messagebox(,oBotao:cText) //Se "oBotao" foi destruído por :End(), deveria
dar um erro aqui e não exibir a mensagem...
oBotao:=NIL //Somente assim consegui destruir...
Obrigado pela atenção,
Reginaldo
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Método End()
-
- Mensajes: 44
- Registrado: Jue Nov 28, 2013 1:54 pm
Método End()
Reginaldo,
> Notei que o método End() não destroi o componente... Para destruir
> tenho que atribuir o valor NIL... Isso é algum bug?
>
> Exemplo:
> oBotao:=TButton():New()
> oBotao:cText:='TESTE'
> oBotao:End()
> messagebox(,oBotao:cText) //Se "oBotao" foi destruído por :End(),
> deveria dar um erro aqui e não exibir a mensagem...
> oBotao:=NIL //Somente assim consegui destruir...
Lo que observa es el comportamiento normal. No hay ningún bug.
Cuando se destruye un control usando su método End(), Xailer destruye el
control windows correspondiente, y libera los recursos que hay utilizado
(memoria, imágenes, cursores, iconos, etc.), pero lo que no se libera en
ese momento es el objeto en cuestión. Ese objeto será liberado por el
"recolector de basura" cuando le llegue el momento, pero mientras quede
alguna referencia viva del objeto, éste seguirá estando en memoria, y se
podrá acceder a aquellas propiedades y métodos que no necesiten acceder
al control windows.
En el ejemplo anterior, cuando se asigna la variable oBotao := NIL,
tampoco significa que el objeto se destruya en ese momento, pero lo que
sí es verdad es que ya no se puede acceder al objeto usando esa
variable, y por eso puede dar la impresión de que se ha destruido, pero
no tiene porqué ser así.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Notei que o método End() não destroi o componente... Para destruir
> tenho que atribuir o valor NIL... Isso é algum bug?
>
> Exemplo:
> oBotao:=TButton():New()
> oBotao:cText:='TESTE'
> oBotao:End()
> messagebox(,oBotao:cText) //Se "oBotao" foi destruído por :End(),
> deveria dar um erro aqui e não exibir a mensagem...
> oBotao:=NIL //Somente assim consegui destruir...
Lo que observa es el comportamiento normal. No hay ningún bug.
Cuando se destruye un control usando su método End(), Xailer destruye el
control windows correspondiente, y libera los recursos que hay utilizado
(memoria, imágenes, cursores, iconos, etc.), pero lo que no se libera en
ese momento es el objeto en cuestión. Ese objeto será liberado por el
"recolector de basura" cuando le llegue el momento, pero mientras quede
alguna referencia viva del objeto, éste seguirá estando en memoria, y se
podrá acceder a aquellas propiedades y métodos que no necesiten acceder
al control windows.
En el ejemplo anterior, cuando se asigna la variable oBotao := NIL,
tampoco significa que el objeto se destruya en ese momento, pero lo que
sí es verdad es que ya no se puede acceder al objeto usando esa
variable, y por eso puede dar la impresión de que se ha destruido, pero
no tiene porqué ser así.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info