bonsoir a tous !!je voudrais savoir si une procedure appele une autre et cette derniere utilise le resultat de la 1ere.
esque la procedure qui appel doit etre avant ou apré la procedure appelé !!
merci
bonsoir a tous !!je voudrais savoir si une procedure appele une autre et cette derniere utilise le resultat de la 1ere.
esque la procedure qui appel doit etre avant ou apré la procedure appelé !!
merci
euh...c'est pas clair...et c'est bourré de faute, merci de faire un effort..
avant et après..mais où? au niveau de la déclaration?
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _
La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _
Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
salut!
non pas dans la declaration mais au niveau du programme exemple:
esque c'est correcte l'enchainnment des procedures ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void_...execution() { ........ ....... } //------------------------------------------------ void_.... initialiser() { .... ...... execution() }
bah, on s'en fiche un peu c'est surtout l'ordre d'appel des procèdures qui importe
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _
La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _
Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
tu peux etre plus clair stp !!merci
bah, je vois pas quoi te dire...je comprends pas exactement ton problème.
tu rencontres un message d'erreur? à la compilation? à l'exécution?
les résultats attendus ne sont pas les bons???
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _
La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _
Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
Salut,
si tu déclares tes fonctions l'ordre n'a aucune importance:
Sinon, le compilateur lit les fonctions de haut en bas, et donc si tu appelles une fonction (execution) dans une autre (initialiser) il faut que la première soit située avant la deuxième pour qu'il sache de quoi tu parles.
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 //déclarations void_...execution(); void_.... initialiser(); //fonctions void_...execution() { ........ } //------------------------------------------------ void_.... initialiser() { ...... execution() }
Mais le plus simple est de déclarer les prototypes de chacune de tes fonctions pour ne pas avoir à se poser cette question, et plutôt organiser et regrouper les fonctions suivant ton choix.
le truc c'est que la fonction initialiser c'est pour remplir un memo et une matrice le memo fonction la matrice aussi mais quand j'utilise la matrice autre part malgré quel est declarer globale elle n'est pas prise en compte dans la fonction executer .
en resumer :dans le deroulement pas a pas dans la fonction executer le teste que je fais sur la matrice n'est pas pris en compte !!
alors je pensais que sa avoir avec se probleme de procedure !!
donc aparement le probleme se situt autre par !!
merci
En fait, il faudrait que tu mettes un peu plus de code, exactement comment tu l'as mis:
- fichier .h (dans extern, public, private ...) ?
- fichier .c (déclaration globale, propre à tes class, ...)
Il n'y a pas besoin de voir toute l'exécution, mais au moins savoir comment est déclaré ta matrice, et où.
Tu as quelques pistes sur les liens suivant:
http://www.developpez.net/forums/sho...ghlight=extern
http://www.developpez.net/forums/sho...ghlight=extern
http://www.developpez.net/forums/sho...ghlight=extern
salut je pense que la matrice ne se rempli méme pas !! commetn je peux savoir si elle se rempli correctement ? dans le code de la fonction initialiser :
et la dans unit.h
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 AnsiString **MatSor; try { MatSor = new AnsiString*[Nbrcolonne]; for (int j = 0; j < Nbrcolonne; j++) { MatSor[j] = new AnsiString[Nbrcolonne]; } for (int i = 0; i < Nbrligne; i++) { MatSor[i] = new AnsiString[Nbrligne]; } } catch(...) { ShowMessage("Erreur lors de l'allocation dynamique de la mémoire pour la matrice de codage"); return; }
dans la procedure Executer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private: // Déclarations de l'utilisateur public: // Déclarations de l'utilisateur AnsiString **MatSor; __fastcall TCIE(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TCIE *CIE;
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for (int i=1;i<Nbrligne;i++) //matrice dentré é sorti { for (int j=1;j<Nbrcolonne;j++) if(( MatSor[i][0]==KB[j][2])&&(MatSor[0][j]==KB[j][3])&& (MatSor[1][j]==KB[i][1])) { MatSor[i][j]=1; }
Tu peux ajouter un point de suivi, (ou un "watch" en anglais) pour voir ta matrice, et tu fais un mode pas à pas pour bien voir comment ton code évolu.
Pour ca, sélectionne ta matrice, et tu fais Run | Add watch, pour la version anglaise. Tu mets un point d'arrêt sur ta ligne (en appuyant sur F5) et quand ton code se stoppe sur la ligne tu avances en pas à pas (en appuyant sur F8).
Autre point, Ta matrice est déclarée dans la class TForm1, si tu l'appelles d'une fonction externe à TForm1 (vu que je ne vois pas la déclaration de la fonction) pour bien parler de la même, il faut faire, par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part Form1->MatSor = new AnsiString*[Nbrcolonne];
merci!!
maintenant le probleme est dans l'appele de la procedure executer (); voila le code
que j'ai ajouter pour mon aplication . la boucle for sert a remplir un stringgrid , le stringgrid se remplit exactement comme je veux d'apres la Table1 ,
mais l'appele de la procedure se fait en boucle quand j'execute le pas a pas et ensuite sa genere une erreur .comment corriger cette erreur?merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for(int I=1;I<Nbrcolonne;I++) { Table1->Next(); .... .... } while (Table1->Eof) executer(); }
Quand tu arrives sur ta fonction executer(), au lieu d'appuyer sur F8, appuie sur F7 pour faire un "step in", tu iras maintenant dans ta fonction. Le problème doit se situer dans cette fonction, pas dans son appel.
Tu auras ainsi plus de détails sur la ligne qui génère l'erreur.
j'ai mis avant for j'ai mis Table1->open(); ensuite apres while j'ai mis Table1->close().
quand j'ai executer pas a pas il a fait l'appelle de la fonction sans aucune erreur.
merci pour votre aide
bandit boy:la matrice est utiliser dans la méme unité (TForm1)Autre point, Ta matrice est déclarée dans la class TForm1, si tu l'appelles d'une fonction externe à TForm1 (vu que je ne vois pas la déclaration de la fonction) pour bien parler de la même,
je l'ai declarer en globale
mais quand la fonction exexuter () est appelé et je fais le deroulement je remarque que la matrice est vide malgré quelle a eté remplit dans initialiser .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private: // Déclarations de l'utilisateur public: // Déclarations de l'utilisateur AnsiString **Matrice; __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TCIE *CIE;
quesqu'il fait faire?
salut!!
bein il fallait juste fair fonction pas procedure pour pouvoir utliser la matrice !! merci a vous tous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager