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

Composants VCL Delphi Discussion :

Aide pour débogage


Sujet :

Composants VCL Delphi

  1. #1
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    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 expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    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 chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    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 chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    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 expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    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