Discussion: Aide pour débogage

  1. #1
    Membre habitué Avatar de retwas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 272
    Points : 195
    Points
    195

    Par défaut Aide pour débogage

    Bonjour,

    J'ai un petit problème avec mon programme.
    Quand je clic sur un TButton je dessine sur un TCanvas.

    Au premier clic j'ai une violation d'accès, et après tout marche correctement.

    Le problème c'est que en pas à pas je passe dans chacune de mes procédures sans aucun problème et à la fin de mon onClick du bouton sur le end; j'ai la violation d'accès...

    Comment je peut faire pour savoir d'ou vient réellement le probleme?

    Merci

    EDIT : Quand je met ce code en commentaire j'ai plus le message, mais je vois pas trop le problème

    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
    var
      ptTmp : array of TPoint;
      i : integer;
    begin
      SetLength(ptTmp, Length(ptPlan));
      if Length(ptPlan) > 0 then
        for i := 0 to Length(ptPlan) do
        begin
          ptTmp[i].X := untDecalage + ((ptPlan[i].X - untDecalage) div oldMarkTop)  * untMaitreTop;
          ptTmp[i].Y := untDecalage + ((ptPlan[i].Y - untDecalage) div oldMarkLeft) * untMaitreLeft;
     
          ptPlan[i].X := ptTmp[i].X;
          ptPlan[i].Y := ptTmp[i].Y;
        end;
     
      FreeAndNil(ptTmp);

  2. #2
    Membre habitué Avatar de retwas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 272
    Points : 195
    Points
    195

    Par défaut

    Finalement j'ai modifié mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      x, y : integer;
      i : integer;
    begin
      if Length(ptPlan) > 0 then
        for i := 0 to Length(ptPlan) do
        begin
          x := untDecalage + ((ptPlan[i].X - untDecalage) div oldMarkTop)  * untMaitreTop;
          y := untDecalage + ((ptPlan[i].Y - untDecalage) div oldMarkLeft) * untMaitreLeft;
     
          ptPlan[i].X := x;
          ptPlan[i].Y := y;
        end;
    Mais si quelqu'un a une solution je suis preneur

  3. #3
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 251
    Points : 1 381
    Points
    1 381

    Par défaut

    Length(ptPlan) comprend l'indice 0 donc


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i:=0 to length(ptPlan)-1
    ou high(ptPlan)

    @+

  4. #4
    Membre expérimenté
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2005
    Messages
    1 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2005
    Messages : 1 251
    Points : 1 381
    Points
    1 381

    Par défaut

    De plus le FreeAndNil(ptTmp); doit te génerer une erreur.
    Si ton tableau était un tableau d'objets à libérer, dans une boucle, tu ferais :
    tableau[i].free; mais la destruction de ton tableau ici ne s'impose pas...
    Tu peux toujours faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      setlength(ptTmp,0);
    pour le vider

  5. #5
    Membre habitué Avatar de retwas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2010
    Messages : 272
    Points : 195
    Points
    195

    Par défaut

    Effectivement, merci beaucoup Archimède

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

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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