Problemas FreeAndNil
Hola!
Tengo un problema q me mosquea. Resulta q ponco un punto de control en un objeto tipo TXMLDocument en el q lo creo en un método y lo libero en el mismo. Al liberarlo le pongo un FreeAndNil(objetoxml) y bueno, ahi a veces me casca y otras no. Supongo q tengo un error en algún sitio y ahi le duele.... Entonces se me ocurrió poner un punto de control dentro de FreeAndNil y mirar lo q me hace. En vez de meterse dentro de ese método se metió en otro totalmente diferente... TCustomDXImageList.Notification(AComponent: TComponent) , este método es un método interno de un componente(DelphiX) q maneja las imagenes. Lo q me gustaría saber es xq no pasa por en método FreeAndNil...y xq me pasa por ese método...si es normal al hacer FreeAndNil...o sino..
Gracias a todos por las molestias :) |
Cita:
Cita:
|
Gracias Neftali.
He probado a meter pero cuando llamo al siguiente método me salta un raised exception (hasta una vez...raised multipled exception jejeje) Por otro lado, el FreeAndNil q pongo no tiene ninguna relación con el método en el q se mete cuando debugas. Lo único q sé, es q antes de pasar por estos métodos, cambio de imagenes. Pero bueno, supongo q tengo un fallo en algún sitio y el compilador empieza a hacer cosas raras...(igual al cambiar las imagenes?). Lo de TXMLDocument.Create(nil) me gustaría saber si no es mucha molestia xq falla, lo otro estoy casi seguro q es por algún error ocurrido antes. Yo creo q algunos objetos necesitan derivarse de un componente para poder funcionar...pero en ese caso q le pase como paramentro un TComponent podría hacer un FreeAndNil o habría q hacerlo de otra forma... Gracias por ayudarme, por ayudar y por todo. |
Normalmente yo estaría de acuerdo con Neftali cuando dice
Cita:
Cita:
1. Usar una variable de tipo IXMLDocument en lugar de TXMLDocument 2. No intentar liberar dicha variable.
La instancia se destruirá automáticamente en cuanto se pierda la última referencia a ella. En el ejemplo, cuando la variable XMLDocument salga de alcance. // Saludos |
Muchas gracias por la ayuda...lo voy a aplicar ahora mismo.
|
La franja horaria es GMT +2. Ahora son las 05:10:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi