[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.
[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.
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);![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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) ....![]()
il faut regarder GetLastError() ..
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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.
FormatMessage()...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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é !
Sous Win32, tu as toujours GetFileSize()...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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.Envoyé par Médinoc
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while (ReadFile(...)) { }
Mais puisque tu es dans le forum MFC, comme dit Farscape, autant utiliser les classes MFC prévu pour, comme CFile
Partager