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 :

Déclarer une fonction en C++ Builder [Débutant(e)]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut Déclarer une fonction en C++ Builder
    je suis vraiment une debutante mais malgré ca j'ai su comment déclaré une fonction en c++builder.mais cette fonction me doit retourné 3valeurs de type AnsiString et entier et autre entier .j'aimerai vraiment que vous m'aidiez au plus vite si vous pouvez.merci .
    comment gérer cette fonction pr me retourné ces 3valeurs.merci.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Alors si tu es très débutante....toujours le même conseil : aller voir les tutoriels de base.

    Ensuite à mon avis il te faut définir un type, une structure fera très bien l'affaire qui contiendra l'ensemble des informations : une fonction n'a qu'une ou aucune valeur de retour.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
    AnsiString a;
    AnsiString b;
    //etc....
    } MonType;
    Et tu défini ta fonction comme retournant un MonType.

    P.S. Les urgents et "au plus vite" sont à éviter : on aide les gens quand on a le temps

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut
    merci pour votre aide.j'ai essayer avc typedef struct et ca bug toujours.il ya tjr des erreurs que e comprend pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    exemple
    //j'ai declaré une structureapres les includes
    typedef struct
    {int k;
    int j;}nveautype;
    //ds la fct j'ai fait comme suit
     
    nveautype__fastcallTForm1::fctIF(TStringList*Fichier,int k,int j)
    {//le corp de la fct
    return nveautype;
    }
    //sans oublié que j'ai fait le prototype de la fct ainsi
    nveautype __fastcall fctIF(TStringList*Fichier,int,int);
    et ca me donne tjr des erreurs comme
    ce n'est pas un type autorisé


    mercii pr votre aide

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Il te manque des espaces dans le prototype du corps de ta méthode :
    • entre le nom du type et __fastcall
    • entre __fastcall et le nom de la méthode


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nveautype__fastcallTForm1::fctIF(TStringList*Fichier,int k,int j)
    il faut avoir ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nveautype __fastcall TForm1::fctIF(TStringList*Fichier,int k,int j)
    Ensuite return nveautype ne fonctionnera pas, il te faut retourner une structure de ce type, pas le type lui même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nveautype __fastcall TForm1::fctIF(TStringList*Fichier,int k,int j)
    {//le corp de la fct
    nveautype mon_resultat;
    return mon_resultat;
    }

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Par défaut
    Merci pour votre aide.
    et desolé pour le derangement car vraiment j'ai passé des jours pour pouvoir fonctionné cette fonction et tjr ca bug.
    moi je ss une etudiante en informatique mais j'essaye d'apprendre le c++ builder tte seule.
    ok pour les espaces je les ai fait des le debutr le pb n'etait pas pr ca.
    en+, je vais etre un peu débile et vs posez cette question.
    pour déclaré une fonction j'ai etait obligé a mette son prototype dans (.h).es-ce juste ca?car mnt apres avoir fait le return d'une structure
    les bugs sont au niveau de(.h)
    pr etre plus claire voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //c'est au niveau (.h)
    void __fastcall Button1Click(TObject *Sender);
    MonType  __fastcall fctIF(TStringList *Fichier,int k,int j );
         MonType __fastcall fctELSE(TStringList *Fichier,int k,int j);
    et ca m'affiche des erreurs comme suit
    -nom de type attendu
    -;manquant dans la declaration
    -declaration multiple pour 'TForm::MonType'
    -declaration plus recente de 'TForm::MonType'
    et tjr
    -ce n'est pas autorisé
    malgré que j'ai suivie tt vos conseils.merci de tt
    et voila mon code(.c)
    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
    TForm1 *Form1;
     
    MonType __fastcall fctIF(TStringList*Fichier,int,int) ;
    MonType __fastcall fctELSE(TStringList*Fichier,int,int) ;
     typedef struct 
    {int k;
    int j} MonType;
    //au niveau d'un  bouton j'ai ca
    fctIF(Fichier,k,j);
    fctELSE(Fichier,k,j);
    //et les fct comme suit
    MonType  __fastcall TForm1::fctIF(TStringList*Fichier,int k,int j)
    {//le corp
    MonType montype ;
       return  montype;}
    et de mm pour l'autre fct car ils ont les mm parametres
    merci

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Les fichiers .h servent pour les déclarations des types et des fonctions...je te recommande vivement de relire les tutoriels de C/C++ de base.

    Bref MonType n'est pas encore connu du compilateur dans ton .h actuel.

    Donc ton .h doit contenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     typedef struct 
    {int k;
    int j} MonType;
     
    void __fastcall Button1Click(TObject *Sender);
    MonType  __fastcall fctIF(TStringList *Fichier,int k,int j );
    MonType __fastcall fctELSE(TStringList *Fichier,int k,int j);
    Et dans ton .c (puisque la première chose que fais le .c est d'inclure le .h tu n'as pas besoin d'y redéfinir les prototypes de tes méthodes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MonType  __fastcall TForm1::fctIF(TStringList*Fichier,int k,int j)
    {//le corp
    MonType montype ;
       return  montype;}
    Bref reprend bien les turoriels de base pour bien comprendre les .h et .c. Je sais que ce n'est pas forcément très facile à comprendre au début mais c'est important d'y passer du temps.

    Bon courage !

Discussions similaires

  1. Déclarer une fonction à la volée : possible ?
    Par Evocatii dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/07/2007, 21h58
  2. Ecrire une fonction dans C++ Builder
    Par ricciheig dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/05/2007, 23h05
  3. définir une fonction avec C++builder 5
    Par dasou dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/03/2007, 23h10
  4. Déclarer une fonction avec deux inconnues
    Par a.ahmed dans le forum MATLAB
    Réponses: 6
    Dernier message: 27/02/2007, 09h43
  5. Déclarer une fonction ayant 2 prototypes dans une DLL
    Par Jayceblaster dans le forum Delphi
    Réponses: 8
    Dernier message: 17/02/2007, 12h00

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