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

C++Builder Discussion :

procedure appelé et appelant


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut procedure appelé et appelant
    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

  2. #2
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    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

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    salut!
    non pas dans la declaration mais au niveau du programme exemple:
    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()
    }
    esque c'est correcte l'enchainnment des procedures ?

  4. #4
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    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

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    tu peux etre plus clair stp !!merci

  6. #6
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    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

  7. #7
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    si tu déclares tes fonctions l'ordre n'a aucune importance:
    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()
    }
    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.

    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.

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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

  9. #9
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    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

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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 :
    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;
       }
    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
     
     
     
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
     
    AnsiString **MatSor;
            __fastcall TCIE(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TCIE *CIE;
    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
     
    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;
     
            }
    merci

  11. #11
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    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];

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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();
     
     }

  13. #13
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    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.

  14. #14
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    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

  15. #15
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    bandit boy:
    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,
    la matrice est utiliser dans la méme unité (TForm1)
    je l'ai declarer en globale
    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;
    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 .
    quesqu'il fait faire?

  16. #16
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    salut!!
    bein il fallait juste fair fonction pas procedure pour pouvoir utliser la matrice !! merci a vous tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. stored procedure sur AS400 appelée par Java
    Par annstger dans le forum DB2
    Réponses: 7
    Dernier message: 04/10/2011, 19h12
  2. CALL_EXTERNAL (IDL appelle C appelle CUDA)
    Par Dijstra dans le forum Débuter
    Réponses: 0
    Dernier message: 20/07/2011, 17h12
  3. Page appelant depuis appelé
    Par jacky01 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/11/2009, 14h10
  4. [Appel URL] appel d'une page web dans 1 Java
    Par c4cf6 dans le forum Applets
    Réponses: 3
    Dernier message: 17/03/2006, 14h13
  5. Procedures stockées qui appellent un autre ?
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/05/2005, 09h30

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