IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Pointeurs] Identificateur fixe et unque pour variables


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut [Pointeurs] Identificateur fixe et unque pour variables
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entree dans la procedure Maclasse.MaProc
    Par contre cela ne marche que pour les classes derivees de TComponent qui possedent une proprietee Name.
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Entree dans la procedure 9534587.Maproc
    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
     
    DbgRegisterObject(MonObjet, 'MonObjet');
    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).

    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 ?

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    au lieu d'envoyer Cardinal(MonObjet), récupère et envoie Cardinal(EAX) car je pense que EAX contient déjà le pointeur sur MonObjet, qui ne sera affecté qu'en fin de Create

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ha ...... EAX le registre Asm ?

    je suppose qu'il faut encadrer la ligne par le bloc asm ?

    PS si t'as d'autres idee ca serait bien

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    je ne connais rien à l'assembleur, mais tu dois pouvoir essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
     res : Cardinal;
    begin
     asm
      mov res, EAX 
     end;
    end;

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Oki merci

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    encore plus simple : passe Cardinal(self) !!!

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Mouais c vrai .. a vouloir faire trop complexe on en oublie la simplicité.

    par contre cela oblige a mettre cette instruction de debugage dans le create de l'objet.

    Eventuelement j'aurais prefere ne pas l'inclure dans l'objet lui meme mais juste avant son create, ou bien une fois pour toute lors de l'initialisation de mon application de maniere a regroupper le plus d'instruction de debug au meme endroit.

    enfin .. je garde tout ca en tete et je vais aviser en cours d'utilisation.

    J'avais pensé a stocker @MonObjet pour stocker l'adresse de la variable qui contiendra d'adresse de l'instance .... mais j'ai eu des problemes de donnees non conforme a un moment. J'ai pas cherché plus loin, j'ai laisse tombe cette option la

Discussions similaires

  1. Variable Chaîne pour variable de type Entier long
    Par ggvert dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/12/2007, 18h32
  2. [PHP-JS] Javascript et php pour variable dynamique
    Par gtenthorey dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/05/2007, 21h36
  3. [Tableaux] Structure PHP pour variable complexe
    Par winnie82 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 13h53
  4. Listes déroulantes pour variables dans un état
    Par Oluha dans le forum Access
    Réponses: 6
    Dernier message: 06/02/2006, 16h09
  5. Réponses: 6
    Dernier message: 16/03/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo