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

Discussion :

Vérification d'écriture avec QFile

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 338
    Par défaut Vérification d'écriture avec QFile
    Bonjour,

    J'écris dans un fichier le contenu d'un QTextedit de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    QString texte=bloctexte->toHtml(); // bloctexte : QTextedit
    QByteArray bytes(texte.toLatin1());
    if (fichier.write(byte)) {printf("texte écrit");}
    else
    {
       QPushButton bouton("test");
      bouton.show();
    }
    Le fichier de destination est vérouillé en lecture seule de façon à génerer une erreur. Si c'est pas la bonne méthode, comment contrôler l'écriture

    Rien ne s'affiche dans la console ( mon printf n’affiche rien ) et mon QPushbutton ne s'afiche pas non plus.

    OU ai-je merdé ?

    Merci d'avance.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    A priori, je dirais que ton bouton se crée dans ton else, mais est détruit dès que tu en sors...
    Au final, tu n'as pas le temps de la voir qu'il a déjà disparu...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    L'erreur devrait être testée plus haut à l'appel d'open() du fichier. En principe si on demande d'ouvrir en écriture alors que le fichier est en lecture seule, ça devrait renvoyer false.

    Il est bon aussi de tester le retour de write(), mais comme ça renvoie -1 en cas d'erreur, le test montré n'est pas bon.
    Pour l'affichage de l'erreur mieux vaudrait appeler QMessageBox::critical(). Le printf() ne se fait peut-être pas parce que l'appli n'est pas configurée en mode console (CONFIG+=console dans le fichier .pro).
    Enfin pour le pushbutton, d'accord avec ArnaudFu1, il va disparaitre immédiatement.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 338
    Par défaut Voici la solution
    Bonjour,

    Je n'ai pas trop compris pourquoi mon QMessage no fonctionne pas.
    Quand à mon problème de retour d'erreur de write, j’attendais un booléen


    Voici la solution qui fonctionne avec récupération d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int retour;
     
    QFile fichier(filename);
    file=fichier.open(QIODevice::ReadWrite|QIODevice::Text);
    QString texte=bloctexte->toHtml(); // bloctexte : QTextedit
    QByteArray bytes(texte.toLatin1());
    retour=fichier.write(byte);
    if (retour==-1)
    {
       QString erreur=fichier.errorString();
       QMessageBox::critical(this,"Erreur",erreur);
    }
    fichier.close();
    Le code pourrait être amélioré en utilisant la traduction des messages d'erreur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

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

Discussions similaires

  1. Création et écriture avec QFile
    Par coolkira dans le forum Qt
    Réponses: 2
    Dernier message: 10/08/2012, 11h28
  2. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  3. Problème d'écriture avec WriteFile
    Par Milowen dans le forum C++
    Réponses: 5
    Dernier message: 17/01/2006, 09h40
  4. Vérification de condition avec affichage message
    Par spirou dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2006, 21h27
  5. erreur à l'écriture avec SQL
    Par Homer dans le forum ASP
    Réponses: 5
    Dernier message: 07/02/2005, 14h03

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