Je suis toujours dans la conception de mon debugger.
J'ai mis en place une methode qui me permet d'afficher le "nom" d'une classe et sa methode associée :
Par contre cela ne marche que pour les classes derivees de TComponent qui possedent une proprietee Name.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Entree dans la procedure Maclasse.MaProc
Pour les autres j'ai resolu le probleme en transmettant l'adresse memoire de l'objet : Cardinal(MonObject)
Comme la lecture dune message de log du genre :
n'est pas tres expressive, j'ai mis en place un systeme d'nregistrement des objets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Entree dans la procedure 9534587.Maproc
ainsi j'ai une correspondance en memoire entre une adresse et un nom defini par moi (qui est la version string du nom de la variable malheureusement pas conservée apres compilation).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DbgRegisterObject(MonObjet, 'MonObjet');
Probleme : Cardinal(MonObjet) est <> 0 qu'apres avoir instencier l'objet, cad apres le create.
Or il est fort possible que je soit amener a executer plusieurs procedures dans le create de mon objets, qui malheureusement ne seront pas affecte par le changement de nom vu que l'objet n'est pas encore enregistre dans le debugger.
Quel autre moyen que l'adresse de l'instance je pourrait utiliser et qui soit unique dans l'application afin que le puisse "enregistrer" mes noms d'objets avant leurs creation ..... (sinon ils associe le nom a 00000000)
Au passage je cherche confirmation de l'utilisation : IntToStr(Cardinal(AObject));
Int est cardinal etant signé non signé ... je ne risque pas d'avoir de nombre negatifs pour desz cardinaux trop grand ? sinon quelle methode appeler ?
Partager