begin process at 2012 05 30 01:01:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Ouverture fichier voumineux....


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ouverture fichier voumineux....

jeudi 15 juillet 2004 à 10:26:06 | Ouverture fichier voumineux....

Clonk

Bonjour,
J'ai une appli en C++ ou je dois ouvrir plusieurs fichiers texte qui peuvent faire plusieurs mégas (jusqu'à 5megs pour le moment...)
Je dois les traiter ligne par ligne et y lancer plusieurs fonctions (assez proche de la programmation par contrainte)
Si j'ouvre un fichier assez petit, ça va, mais quand je passe à un fichier de 1,5mega ou plus, j'ia le message suivant :

Debug assertion failed!
Program....
Line : ...
Expression : _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

Ensuite, il me demande les fichiers suivant pour le debug:

DBGDEL.cpp
NEW.cpp

Pour enfin me dire :

User breakpoint called from code as 0x40a759


Si quelqu'un connait ce genre d'erreur, ça m'aiderait beaucoup! Je pense bien qu'il s'agit d'une surcharge au niveau de la mémoire, mais je ne sais pas comment el gérer... pourtant, je gère ligne par ligne et pas le fichier en entier et j'essaye au maximum de supprimer les variables trop grandes...
jeudi 15 juillet 2004 à 10:55:49 | Re : Ouverture fichier voumineux....

vecchio56

Administrateur CodeS-SourceS
A mon avis, ton problèm n'est pas lié à la taille du fichier, mais à celle des lignes. Je ne pense pas non plus que lire par ligne est une bonne solution. Moi je lirais par paquets de taille constante avec ReadFile comme ca pas de risque de problème de mémoire.
Pour ton erreur, il serait utile d'avoir un peu de code (comment a tu alloué la mémoire et comment lis-tu le fichier?)
jeudi 15 juillet 2004 à 12:00:44 | Re : Ouverture fichier voumineux....

Clonk

Bon, j'ia déjà écris une réponse, mais apparemment elle ne se montre pas...

Bah oui, comme tu dis, apparemment c'est un problème de taille de ligne (ou du moins de variable...)

Je dois absolument lire ligne par ligne le fichier : je dois lancer plusieurs fonctions de vérification sur caque ligne et suivant les résultats de ces fonctions, écrire ou non la ligne dans un autre fichier...

J'ai pu tester pas mal de trucs depuis, il me lit mon fichier tant bien que mal (C du ligne par ligne quoi...) et commence le traitement, tout va mal dès qu'il commence à décomposer ma ligne et y appliquer des fonctions (je suis pas encore descendu assez bas dans mes tests...)

Si tu as une solution pour lire le fichier d'un coup dans un buffer et gérer les retour à la ligne, je suis pour!
jeudi 15 juillet 2004 à 12:46:36 | Re : Ouverture fichier voumineux....

AlexMAN

Membre Club
Ben tu peux lire un paquet de taille constante, et puis traiter celui ci pour recuperer chaque ligne, si tu comprens pas, dis moi, j'ai une fonction qui fais ca, jla posterai...
jeudi 15 juillet 2004 à 13:38:33 | Re : Ouverture fichier voumineux....

Clonk

j'ai complètement compris ce que tu dis, mais je sais pas torp comment tu veux gérer ça...
Si tu veux bien poster ta fonciton, ça m'aiderait ouais, merci!
jeudi 15 juillet 2004 à 14:03:27 | Re : Ouverture fichier voumineux....

AlexMAN

Membre Club
Bon jl'ai pas retrouvé, mais ca doit ressembler a ca :


DWORD dwRead = 0, dwReadTot = 0, size;
HANDLE hFile;
char szBuffer[256], *c;
int i = 0, ok = 0;

hFile = CreateFile("pass.txt", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (hFile == INVALID_HANDLE_VALUE) { CloseHandle(hFile); return FALSE; }
size = GetFileSize(hFile, NULL);

while (dwReadTot < size) {
ReadFile(hFile, szBuffer, 256, &dwRead, 0);
szBuffer[dwRead] = 0;
c = szBuffer;
while (*c != '\r') { c++, i++;}
*c = 0; i += 2; //+2 pour sauter \r\n;
dwReadTot += i;
SetFilePointer(hFile, i, 0, FILE_BEGIN);
}
CloseHandle(hFile);
return ok;

La ligne complete est stockée ds szBuffer...

++

jeudi 15 juillet 2004 à 14:37:50 | Re : Ouverture fichier voumineux....

Clonk

Meric, mias mon erreur ne vietn pas de là en fait...
C'est pas le fichier qui fait tout planter...
là je teste un fichier de 18000 lignes, tout se passe bien jusqu'à la 8069ème ligne, là quoiqu'il se passe, que je teste la ligne ou pas, je plante irrémédiablement...
Soit j'en suis à un dépassemetn de capacité, soit j'ai débordé quelque part dans un tableau.
Peros, j'ia pas d'idée fixe là dessus pour le moment.
jeudi 15 juillet 2004 à 15:02:31 | Re : Ouverture fichier voumineux....

AlexMAN

Membre Club
Le bout de code que je t'ai donné recuperait une paquet de 255 octets, prenait la premiere ligne du paquet, et placait le pointeur du fichier sur le debut de la ligne suivante, c pas ca que tu voulais ? Envoie ton code ds le cas contraire, pour kon regarde ensemble ou sont les erreurs !

++


Cette discussion est classée dans : fichier, ligne, ouverture, fichiers, voumineux


Répondre à ce message

Sujets en rapport avec ce message

Tableau multidimensionel et fichiers [ par AngeloVivaldi ] slt à tous.Voila, je voudrai mettre dans un tableau multidimensionel chaque ligne d'un fichier, puis modifier une ligne du tableau pour le réécrire da conversion de fichiers [ par sergio18 ] salutJe fais un projet où je dois faire une conversion du fichier.POur cela le prof qui me suit m'a demandé d'effectuer ds un premier temps une lectur probleme de fichiers [ par sergio18 ] Bonjourj'ai un soucis pour recuperer une chaine de caractère.voici le code:Class Fichier{Lire();}Fichier::Fichier(){FILE *fichier;fichier=fopen(nomfic boite de dialogue : ouverture de fichiers [ par KsmoinO ] existe-t-il sous Visual C++ une fonction permettant d'ouvrir une liste de fichier? Dans mon cas je souhaite graver une liste de fichier. Comment faire gestion de fichiers en C [ par selmaensi ] bonjour,je voudrais savoir comment faire une modification directe sur un fichier enC (le fichier est un bloc note;document texte) qui contient des enr manipulation des fichiers avec c++ [ par zing_tun ] Salut , c Anis de tunis ,en ce moment je suis en stage et je suis charger de developper un outil de synchronisation entre de base de donnees .le conte Ouverture de fichier [ par chevalboiteux ] Bonjour,Je développe une application qui doit intercepter l'ouverture des fichiers sur un disque réseau pour effectuer un traitement sur ceux-ci avant Comparer 2 fichiers textes rapidement [ par chtitpierre78 ] Bonjour,Suite à un premier poste, dont le titre ne correspond pas du tout a ma demande, je re-poste ici, en espérant trouver  solution à mon problème. fichiers en C [ par boualiasma ] Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra Chercher un string dans un fichier texte ? [ par chtitpierre78 ] Bonjour,Je développe actuellement un outils en C++ (VisualC++) qui me permet de comparer 2 fichiers textes (.txt) d'environ 4Mo chacun (soit environ 6


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 25,756 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales