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

 Delphi Discussion :

Integer qui vaut 0


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut Integer qui vaut 0
    Hello,

    soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //dans def de TMaClasse:
    private
      index:integer;
      constructor create;
    property monIndex:integer read index write index;
    puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    constructor TMaClasse.create;
    begin
      inherited; // NB: avec ou sans inherited ne change rien au pb...
      monIndex:=-1;
    end;
    // plus loin...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    titi:=TMaClasse.create;
    showmesage(intToStr(titi.monIndex));
    Et bien le message indique que monIndex vaut 0 et non -1 !!

    J'arrive pas à lui faire entendre raison...

    Merci aux âmes charitables.

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut.

    Un coup pour rien. désolé

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Je viens de tester ton code et cela ne me le fait pas.

    Néanmoins j'ai quelque remarques sur le code tel quel.

    • Les champs sont convention précédés d'un F
    • En règle générale il est préférable d'éviter d'utiliser les mots clé comme identificateur (index est un mot clé)
    • Dans le constructeur il est préférable (mais pas toujours) d'affecter la valeur initiale directement dans le champ plutôt que de passer par la propriété

  4. #4
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    salut.

    Choisie un autre type que integer alors.
    Si je mets monIndex à -1 après l'appel au create et bien ça marche pourtant... alors pkoi on peut pas le faire ds le create ?

  5. #5
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Je viens de tester ton code et cela ne me le fait pas.

    Néanmoins j'ai quelque remarques sur le code tel quel.

    • Les champs sont convention précédés d'un F
    • En règle générale il est préférable d'éviter d'utiliser les mots clé comme identificateur (index est un mot clé)
    • Dans le constructeur il est préférable (mais pas toujours) d'affecter la valeur initiale directement dans le champ plutôt que de passer par la propriété
    Ne tiens pas compte de la syntaxe PRECISE du code, je le mets juste à titre d'exemple... en réalité c'est pas "index", y'a un F devant, etc etc...

    Je vais tenter ta remarque n° 3 qui m'a l'air intéressante...

    EDIT: testé avec FIndex... exactement pareil... ! => 0 !!

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Salut.

    Un coup pour rien. désolé
    Pourquoi tu as viré ton message initial ???

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Pourquoi tu as viré ton message initial ???
    lol
    Au moment où j'ai fais VALIDEr je me suis trompé pensant bien faire
    mais l'interger est signé (mdr..)

    donc j'ai changé ma pharse et quand je suis revenu il y avais déjà 2 réponses dont la tienne...

    T'es lucky-luck t'es plus rapide que ton Ombre


  8. #8
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    lol
    Au moment où j'ai fais VALIDEr je me suis trompé pensant bien faire
    mais l'interger est signé (mdr..)

    donc j'ai changé ma pharse et quand je suis revenu il y avais déjà 2 réponses dont la tienne...

    T'es lucky-luck t'es plus rapide que ton Ombre

    Mouais bof... l'ombre serait elle plus rapide que l'éclair alors ???

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Ben comme je disais moi je n'ai pas l'anomalie sous Delphi 7. Avec quelle version travailles-tu ?

    Sinon je ne connais pas la complexité du code mais en faisant du pas à pas par exemple tu pourrais tracer tout ce qui se passe lors de la construction pour essayer de voir s'il n'y aurait pas un traitement croisé qui réinitialiserait ton champ.

  10. #10
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Mouais bof... l'ombre serait elle plus rapide que l'éclair alors ???

    on me l'avait jamais fais...

  11. #11
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Ben comme je disais moi je n'ai pas l'anomalie sous Delphi 7. Avec quelle version travailles-tu ?

    Sinon je ne connais pas la complexité du code mais en faisant du pas à pas par exemple tu pourrais tracer tout ce qui se passe lors de la construction pour essayer de voir s'il n'y aurait pas un traitement croisé qui réinitialiserait ton champ.
    Hummm, ok, voyant que le ctrl-f9 ne me proposait pas de points de debug dans le create, j'ai pas pensé à breaker lors de l'appel du create pour rentrer dedans...

    EDIt ARGGG et non j'avais raison, il me squize le create en mode debug, quel saloupiaut !!

  12. #12
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Treve de plaisanterie :

    Tu as essayé une autre valeur que -1 pour voir si cela fonctionne ? chez toi.

  13. #13
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Treve de plaisanterie :

    Tu as essayé une autre valeur que -1 pour voir si cela fonctionne ? chez toi.
    Fait : j'ai mis 2, tjrs pareil, il se retrouve avec 0...

  14. #14
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Tout ça ne nous dit pas avec quelle version tu travailles

  15. #15
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aos Voir le message
    Tout ça ne nous dit pas avec quelle version tu travailles
    Oups sorry, v7.0 build 4.453

  16. #16
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Si le debuggeur ne rentre pas dans le constructeur alors cela veut dire qu'il n'est pas compilé (ou que le compilateur a retiré l'appel pour optimisation car tu ne fais rien de l'objet construit).

    Essayes de supprimer tes DCU pour repartir sur une base saine.

  17. #17
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    Le create est-il en private, comme dans le code plus haut?

    Si oui il appelera le Create de l'ancêtre (sauf si TMaclasse est dans la même unité que le code appelant)

    Mon test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    unit Unit2;
     
    interface
     
    type
      TMaClasse = class(TObject)
    private
      findex:integer;
      constructor create;
    public
    property monIndex:integer read findex write findex;
    end;
     
    implementation
     
    { TMaClasse }
     
    constructor TMaClasse.create;
    begin
      inherited; // NB: avec ou sans inherited ne change rien au pb...
      monIndex:=-1;
     
    end;
    dans une autre unité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // 0 si dans un autre unité
    // -1 si appel du Create dans la même
      ShowMessage(IntToStr(TMaClasse.create.monindex));

  18. #18
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Linkin Voir le message
    Le create est-il en private, comme dans le code plus haut?

    Si oui il appelera le Create de l'ancêtre (sauf si TMaclasse est dans la même unité que le code appelant)
    J'ai pas lu la suite de ton post désolé (je l'ai vu qu'en répondant !) et en fait c'était ça !!

    Une erreur de petit padawan croyez vous ?

    EDIT : one point pour Linkin (si ça peut aider Patricia Kass...).

  19. #19
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Arf moi j'avais implicitement déplacé ton constructeur et la propriété dans une section public

    Effectivement définir un constructeur en tant que privé ne cache pas le constructeur hérité (à défaut celui e TObject) donc ici il passait par le constructeur de ta classe parente plutôt que celui que tu avais définit.

    Franck Soriano me l'avais déjà fait remarqué pourtant... non pas taper Franck

  20. #20
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Arf moi j'avais implicitement déplacé ton constructeur et la propriété dans une section public

    Effectivement définir un constructeur en tant que privé ne cache pas le constructeur hérité (à défaut celui e TObject) donc ici il passait par le constructeur de ta classe parente plutôt que celui que tu avais définit.

    Franck Soriano me l'avais déjà fait remarqué pourtant... non pas taper Franck
    Pas grave, tu marqueras un point une autre fois va...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sqldatasource avec paramètre qui vaut null
    Par aurelien.tournier dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/01/2008, 11h56
  2. Réponses: 18
    Dernier message: 22/06/2007, 15h42
  3. champ qui vaut zéro
    Par boulette85 dans le forum ASP
    Réponses: 2
    Dernier message: 25/07/2006, 08h51
  4. PB avec une CComboBox qui vaut 0x00000000 !!
    Par chaser_T dans le forum MFC
    Réponses: 1
    Dernier message: 29/12/2005, 18h29

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