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

MFC Discussion :

Fin d'un fichier binaire


Sujet :

MFC

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut Fin d'un fichier binaire
    [VC++ 6.0]


    J'utilise des fichiers binaires ouverts par Createfile() et dont les accés se font par des ReadFile() et WriteFile().

    Comment détecter la fin du fichier (EOF) ?
    Il doit bien exister une fonction pour cela !

    Merci.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    je dirais en testant la si la lecture échoue ,
    ou en regardant avant la taille du fichier,
    néanmoins si tu utilise les MFC la classe CFile est plus adaptée ,elle utilise directement les api writefile ,readfile etc...
    (voir CFile::GetLength ou CFile::SeekToEnd ).
    en api 32 pour la taille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DWORD dwNew = ::SetFilePointer(hFile, 0L, NULL,(DWORD)FILE_END);

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    En fait si la lecture échoue on ne sait pas si c'est parce l'on est en fin de fichier ou problème autre !

    trop fort!

    Donc pas de fonction Eof(handle) ....

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    il faut regarder GetLastError() ..

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    Je suis allé voir les (milliers) de messages retournés par GetLastError(), pas trouvé ce que je voulais. Je crois que je vais devoir insister !

    Ben finalement en insistant, je viens de trouver un ERROR_HANDLE_EOF, que de ce pas je vasi tester ...

    merci encore.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    FormatMessage()...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    En fait, aprés test même si la fin du fichier est atteinte aucune erreur de ressort aprés une lecture.

    Je teste le nombre d'octets lus indiqué par la commande readFile() pour repérer la fin du fichier, même si personnellement je n'aime pas trop cette méthode. Je trouve fort que l'on n'ai aps un moyen de repérer la fin de fichier alors que cela existe dans les autres langages..

    Mais bon c'est du C++, pourquoi faire simple, quant on peu faire compliqué !

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Sous Win32, tu as toujours GetFileSize()...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Médinoc
    Sous Win32, tu as toujours GetFileSize()...
    Ca ne sert à rien d'utiliser GetFileSize, la bonne méthode est de boucler avec comme condition de sortie le retour de readfile différent du nombre d'octet à lire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while (ReadFile(...))
    {
    }
    On peut meme pourquoi pas inclure une verification de GetLastError dans la condition si vraiment on veut etre sur de tout controler, mais utiliser GetFileSize revient à lire à l'ancienne, octet par octet, en faisant une boucle avec un compteur qui s'incrémente tant qu'on a pas atteint le résultat de GetFileSize, c'est contre productif

    Mais puisque tu es dans le forum MFC, comme dit Farscape, autant utiliser les classes MFC prévu pour, comme CFile

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

Discussions similaires

  1. Trouver fin fichier binaire
    Par Loukas42 dans le forum C#
    Réponses: 4
    Dernier message: 14/04/2011, 09h39
  2. Lecture de fichier binaire et gestion de fin de fichier
    Par habasque dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/05/2007, 17h06
  3. fin du fichier binaire
    Par MSM_007 dans le forum C
    Réponses: 2
    Dernier message: 02/05/2007, 07h36
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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