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++ Discussion :

Message d'erreur: Return-statement with no value


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 32
    Points
    32
    Par défaut Message d'erreur: Return-statement with no value
    Salut à tous!

    J'essaie d'ouvrir un fichier en utilisant une fonction non-void.

    Le problème est que je recois le message d'erreur suivant: "return-statement with no value, in function returning 'QStringList".

    Y a -t-il une autre possibilité de stopper le processus si le fichier ne peut pas être ouvert? "break ne peut pas fonctionner ici, étant donné qu'il n'est utilisé que dans les boucles.

    Voic mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    QStringList myWindow::open(QString &fileName)
    {
    QFile file(fileName);
     
    if(!file.open(QIODevice::ReadOnly))
    {
    QMessageBox::critical(this, "Warning", "Open a file please");
    return;
    }
     
    // Je fais quelque chose ici.
    }
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Bien que cryptique, le message d'erreur t'indique exactement ce qui ne va pas

    En effet, tu déclare explicitement que ta fonction est sensée renvoyer un objet de type QStringList. Or, on lit return; à la ligne 9 du code que tu nous présente.

    Le compilateur te dis donc en gros
    Citation Envoyé par le compilateur, qui n'a décidément aucune imagination
    d'accord, mais qu'est ce que tu veux que je renvoye tu me dis de renvoyer un objet de type QStringList, mais je n'en ai pas, moi!!!
    Une fois que tu as compris cela, la correction s'impose d'elle-même : il faut que tu lui fasse renvoyer une QStringList, quitte à ce qu'elle soit vide

    Au choix, tu peux envisager le code
    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
    QStringList myWindow::open(QString &fileName)
    {
        QFile file(fileName);
        if(!file.open(QIODevice::ReadOnly))
        {
            QMessageBox::critical(this, "Warning", "Open a file please");
            return QStringList(); //crée explicitement une QStringList vide et la renvoie
        }
        // ici, je sais que je dois remplir une QStringList, je l'appelle "laliste" 
        QStringList laliste;
        /*   ...
         * remplir la liste avec ce qui t'intéresse
         */
        return laliste;
    }
    ou le code
    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
    QStringList myWindow::open(QString &fileName)
    {
    QFile file(fileName);
        QStringList laliste; // Je sais que je vais renvoyer une QStringList, même
                             // si elle sera peut être vide
        if(!file.open(QIODevice::ReadOnly))
        {
            QMessageBox::critical(this, "Warning", "Open a file please");
            return laliste; // comme je n'ai rien mis dedans, la liste est vide :-)
        }
         /*   ...
          * remplir la liste avec ce qui t'intéresse
          */
        return laliste;
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Merci koala01 pour ta réponse.

    J'ai fait ce que tu as proposé et ensuite, j'ai omis volontairement d'indiquer le nom du fichier. Je recois le message de la QMessageBox effectivement, mais le programme plante. Je me répète malheureusement, si le fichier ne peut donc pas être ouvert, le programme va planter! Y a -t-il un moyen d'éviter cette situation?

    Merci d'avnace.

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Citation Envoyé par stanfillirenfro Voir le message
    Merci koala01 pour ta réponse.

    J'ai fait ce que tu as proposé et ensuite, j'ai omis volontairement d'indiquer le nom du fichier. Je recois le message de la QMessageBox effectivement, mais le programme plante. Je me répète malheureusement, si le fichier ne peut donc pas être ouvert, le programme va planter! Y a -t-il un moyen d'éviter cette situation?

    Merci d'avnace.
    Comme le dirait l'agent Mulder: "la vérité est ailleurs "

    Dans notre cas, "ailleurs" ne peut être qu'à un seul endroit: dans la fonction qui appelle la fonction open . Je ne serais pas étonné outre mesure que cette fonction parte du principe que la QStringListe renvoyé n'est pas vide. Or, cela peut être le cas si tu n'a pas indiqué de nom de fichier valide. Il faut donc prendre cette possibilité en compte

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Merci koala01 und fois de plus.
    Je peux grâce à toi marquer ce sujet comme résolu.

    Merci encore pour ton aide.

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

Discussions similaires

  1. [MySQL] Message d'erreur "Column count doesn't match value count at row 1"
    Par loviso dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 21/04/2010, 00h07
  2. message d'erreur Syntax error, insert ";" to complete Statement
    Par manguigs dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/03/2009, 13h35
  3. Réponses: 8
    Dernier message: 09/02/2009, 17h44
  4. [débutant] Erreur de procédure "Subquery returned more than 1 value"
    Par jeanmarc1234 dans le forum Développement
    Réponses: 4
    Dernier message: 11/12/2008, 23h09
  5. [FPDF] message d'erreur "file does not begin with'%PDF-'"
    Par narutobaka dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2008, 08h46

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