yvescollet
Messages postés55Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention22 janvier 2006
-
15 août 2005 à 14:34
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
22 août 2005 à 09:47
bonjour,
j'aimerais savoir s'il est possible de tester qu'un pointeur contenant une adresse mémoire pointe bien sur une structure existante.
(je dois débugger une applic qui contient plein de pointeurs ayant une adresse (<> nil) mais qui pointent sur des adresse non valides, et donc ça pete quand je fais des :
if assigned(x) then
freeandnil(x);
cs_Zeroc00l
Messages postés367Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention11 février 2010 15 août 2005 à 16:00
Je ne crois pas que tu puisses.
Si c'est une structure que tu as défini toi-même, alors non.
Codes toi un gestionnaire de classe sinon.. ca va te prendre un p'tit peu de temps mais ça sera toujours reutilisable !
Une astuce toute simple :
Remplace ta struct par une classe.
Definit un vecteur static dans cette classe (qui prend des TObject)
Dans le constructeur ("Create" en general) de cette classe : ajoute "Self" au vecteur.
Dans le destructeur ("Destroy en general) de cette classe : enelve "Self" du vecteur
Crée une methode static "function Contains(const TObject obj) : bool;"
qui retourne vrai ou faux suivant que l'adresse est dans le vecteur
Soit tu utilise Contains, soit ca te fais chier et tu met le test dans le destructeur
(comme ca marche pour tout les objet)
Cependant si tu le met dans le destructeur ca ne t'aide pas bcp car
meme si le test est effectué, et meme si tu affiche un message, l'objet
sera detruit.Tu peux cependant mettre un point d'arret si dans le
dstructeur tu t'apercois que Self n'est pas dans le vecteur et regarde
la pile des appel, tu sauras d'ou viens la destruction d'un mauvais
objet
Voili voilo , j'espere que j'ai pas été trop obscure :)
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 16 août 2005 à 11:06
Lol, c'est vrai que les templates c'est pratiques, voir très très pratique ! Sinon l'idée est pas mal, même si c'est peut-être long à mettre en place (surtout pour modifier un programme). Cependant tu peut toujours vérifier si tes adresses contiennent bien quelque chose de cohérent à l'aide des watch du débugger.
neodelphi
Vous n’avez pas trouvé la réponse que vous recherchez ?