Pb fichier de plus de 2 go

cs_yamatoto Messages postés 2 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004 - 6 juil. 2004 à 16:38
GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 - 4 janv. 2011 à 16:08
Bonjour, j'ai un petit probleme avec un fichier dont la taille depasse 2Go. C est un fichier mixte (texte + valeur binaire).
Pour pouvoir traiter mon fichier je fais une lecture sequentielle avec a certain moment de Fseek() qui me permette de revenir en arriere.
tout alle bien jusqu a ce que mon fichier depasse la belle taille de 2Go, et que les fonctions fseek ou ftell ne se mette a renvoyer -1.
quelqu un aurait il deja eu ce type de probleme et pourrait me donner un contournement.

Merci d'avance

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 juil. 2004 à 17:13
API Windows gere fichiers sur 64 bits.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_yamatoto Messages postés 2 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 11:57
, j ai trouve une solution a mon probleme, au debut j utilisais les fonctions fseek et ftell pour me repositionner ou savoir ou j etais dans le fichier, ce sont ces fonctions qui sont limitees par les int. L utilisation des fonctions fgetpos et fsetpos qui utilise non pas des int mais des structures fpos_t (ses strucures sont implementees avec des long int, big int, _int64,... suivant le systeme surlequel on se trouve).
Grace a cette utilisation le repositionnement peut se faire apres les 2Gigas fatals jusqu'alors.
0
GBadry Messages postés 77 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 février 2014 2
4 janv. 2011 à 16:08
Salut Yalatoto,
J'ai rencontré aussi le même problème et apparament il n'y a pas d'autre solution sauf le fgetpos et fsetpos.
Le problème avec ces deux fonctions c'est que si je veux incrémenter ma position, je ne peux pas.
EN d'autres termes, si par exemple j'ai reféré la position et que je veux lire une valeur réelle qui se situe juste derrière une valeur entière, je ne peux pas incrémenter ma position de 4 (taille d'un entier). Alors que celà était facilement incrémentable par le fseek ftell puisqu'elles renvoient des entiers, alors que le fgetpos et fsetpos renvoient des variables de type fpos_t.
Ma question est connais-tu comment manipuler ce type de données en faisant incrémenter ou décrémenter cette position?

Merci d'avance.

Losers are not those who try and fail, but those who even fail to try
























watch movies online tv
0
Rejoignez-nous