Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
15 juil. 2004 à 10:26
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 2009
-
15 juil. 2004 à 15:02
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...
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 15 juil. 2004 à 10:55
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?)
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 15 juil. 2004 à 12:00
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!
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 15 juil. 2004 à 12:46
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...
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 15 juil. 2004 à 13:38
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!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 15 juil. 2004 à 14:37
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.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 15 juil. 2004 à 15:02
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 !