Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Composants VCL
Composants VCL Utilisation des différents composants VCL (Visual Component Library)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/01/2013, 12h44   #1
retwas
Membre à l'essai
 
Inscription : mars 2010
Messages : 132
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 132
Points : 22
Points : 22
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 :
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);
retwas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 13h10   #2
retwas
Membre à l'essai
 
Inscription : mars 2010
Messages : 132
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 132
Points : 22
Points : 22
Finalement j'ai modifié mon code

Code :
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
retwas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 14h40   #3
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
Length(ptPlan) comprend l'indice 0 donc


Code :
for i:=0 to length(ptPlan)-1
ou high(ptPlan)

@+
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 16h00   #4
Archimède
Membre émérite
 
Avatar de Archimède
 
Homme anthony
Enseignant
Inscription : avril 2005
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme anthony
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 1 026
Points : 975
Points : 975
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 :
1
2
 
  setlength(ptTmp,0);
pour le vider
__________________
Citation:
tout développeur plongé dans son code subit une poussée d'urticaire de bas en haut égale au poids du volume d'unités qu'il ajoute.
Archimède est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 17h46   #5
retwas
Membre à l'essai
 
Inscription : mars 2010
Messages : 132
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 132
Points : 22
Points : 22
Effectivement, merci beaucoup Archimède
retwas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h20.


 
 
 
 
Partenaires

Hébergement Web