Voila mon soucie est que sa compile parfaitement avec plusieurs avertissement
conversion de pointeur suspecte.
Donc je vous résume le code ici et je note ou sa plante:
le main:
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 int main(int argc, char* argv[]) { unsigned char wnd_Decal; short int xAbs,yAbs; short int *px,*py; unsigned char TabX[4][20],TabY[4][15]; px=&xAbs; py=&yAbs; Traitement(&TabX,&TabY,px,py,&wnd_Decal); return 0; }
la fonction traitement: qui marche impec au pas a pas:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 void Traitement(unsigned char Tabx[4][20],unsigned char Taby[4][15], short int *px,short int *py,unsigned char *wnd_Decal) { unsigned char Num_Fonct=0; int i=0; while (i==0) { switch (Num_Fonct) { case 0: *wnd_Decal=1; Absolut(&Tabx,&Taby,px,py,&wnd_Decal); if (*py>0 && !wnd_Decal) Num_Fonct=2; else if (*py>0 && wnd_Decal) Num_Fonct=3; else Num_Fonct=0; break; case 1: *wnd_Decal=1; Relatif(&Tabx,&Taby,px,py,&wnd_Decal); if (!*py && !wnd_Decal) Num_Fonct=0; else Num_Fonct=3; break; case 2: *wnd_Decal=2; Relatif(&Tabx,&Taby,px,py,&wnd_Decal); if (!*py && !wnd_Decal) Num_Fonct=0; else Num_Fonct=3; break; case 3: *wnd_Decal=3; Relatif(&Tabx,&Taby,px,py,&wnd_Decal); if (!*py ) Num_Fonct=1; else Num_Fonct=3; break; default: Num_Fonct=0; } //On récupère les valeur de X et Y qui sont xAbs et yAbs:test printf(%i,*px); printf(%i,*py); //de toute facon sa arrive pas jusque la^^ i++; } }
Et l'endroit ou actuellement sa plante en boucle infini:
le début de la fonction absolut:
Désolé ya d'autre fonction mais elle sont un peu longue donc ce n'est que ici que sa plante (joint le .c complet)
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
25
26
27
28
29
30 void Absolut(unsigned char Tabx[4][20],unsigned char Taby[4][15],short int *px,short int *py,unsigned char *wnd_Decal) { unsigned char i=0; //APPEL A LA FONCTION DE CAPTURE DE LA ZONE IMAGE FullCapture(&Tabx,&Taby); //coordonnée du centre de la zone while (*py==0 || i<4) { *wnd_Decal=1; ProcProto(&Tabx,&Taby,px,py,&wnd_Decal,i); i++; } if (!*py) { switch (i) { case 1: Recadrage(px,&py,200,60,1); break; case 2: Recadrage(px,py,80,180,1); break; case 3: Recadrage(px,py,200,180,1); break; } } }
l'endroit ou sa plante est le test sur *py et ensuite si on le suprimme sa replante quand on doit modifier un des 2 pointeurs.
Donc sa fait pas mal de temps que j'ai plus fait de C et la je galere vraiment ....
Merci de votre aide
Partager