Página 1 de 1

Método End()

Publicado: Mar Abr 15, 2014 4:35 pm
por Sommus - Reginaldo
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

Método End()

Publicado: Dom Abr 20, 2014 8:40 pm
por jfgimenez
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