Bonjour,

J'ai un problème assez difficile à régler.

J'ai un code où il semble avoir une variable mal initialisée ou traitée. Les symptômes sont les suivants :

-Lorsque je ferme l'application bien souvent il me fait l'erreur suivant :

+Access Violation at adress :... in module BXXXX.DLL

+Enfin, violation d'accès standard, seulement elle s'effectue à la fin de tout.

-Lorsque, j'effectue une séquence d'opération, la même erreur survient.

-Je me mets des breakpoints et le problème ne semble pas venir de la ligne où le problème survient.

-J'interchange la position de deux variables dans la déclaration exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AnsiString temp = "";
AnsiString deuxiemeTemp = "";
Devient :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
AnsiString deuxiemeTemp = "";
AnsiString temp = "";
Et le programme passe par dessus l'ancien breakpoint sans broncher.

-Je mets des grandes parties de code en commentaire, l'erreur disparaît. Je rejoute progressivement le code qui était en commentaire au code normal. Tout fonctionne jusqu'à un point qui ne me semble pas problématique. J'effectue quelque modification du type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ShowMessage(AnsiString(i+1));
 
devient
 
tempo = AnsiString(i+1);
ShowMessage(tempo);
Et le problème est régler, mais survient à un endroit où avant il n'y avait pas d'erreur.

Enfin, je semble traquer un fantôme... si quelqu'un connait un moyen de trouver la source...

J'ai essayer avec CodeGuard, mais il me pointe toujours la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
inFile.getline(temp, sizeof(temp));
où
char temp[256];
il semblerait que cela soit un bug dans codeguard (selon ce que j'ai lu sur internet).

Si quelqu'un a une idée...

merci...

antoine