Bonjour tout le monde,
J'essaie de charger un fichier text sur base d'un nom d'un fichier.
D'habitude, ce genre d'op�ration ne pose pas de probl�me mais aujourd'hui �a ne fonctionne pas.
voici les m�thodes de chargement :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| bool CTabProduits::Charger(const char* NomFichier)
{
CChargeurFichierTexte Chargeur;
return Chargeur.Charger(NomFichier,'\t',FctnTraiterLigne,this);
}
bool CTabProduits::FctnTraiterLigne(const CChargeurFichierTexte& Chargeur, void* Contexte)
{
return ((CTabProduits*)Contexte)->TraiterLigne(Chargeur);
}
bool CTabProduits::TraiterLigne(const CChargeurFichierTexte& Chargeur)
{
if (Chargeur.NombreChamps() == 2) Ajouter(CProduit(Chargeur.Champs(0),atol(Chargeur.Champs(1))));
return true;
}
bool CTabProduits::Ajouter(const CProduit& Modele)
{
return CTableauGenerique::Ajouter(Modele);
} |
Quand il arrive ici :
if (Fichier == NULL) return false;
il stoppe le chargement car Fichier est �gal � null, il n'a donc pas pu ouvrir le fichier avec ce code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| bool CChargeurFichierTexte::Charger(const char* NomFichier, char UnSeparateur, bool (* FctnTraiterLigne)(const CChargeurFichierTexte&, void*), void* Contexte)
{
const long TailleLigne = 500;
char Ligne[TailleLigne+1];
FILE* Fichier;
if ( (NomFichier == NULL) || (*NomFichier == 0) ) return false;
Fichier = fopen(NomFichier,"rt");
if (Fichier == NULL) return false;
while (fgets(Ligne,TailleLigne,Fichier) != NULL)
{
long i = strlen(Ligne);
if ( (i > 0) && (Ligne[i-1] == '\n') ) Ligne[i-1] = 0;
if (Definir(Ligne,UnSeparateur))
{
if (!FctnTraiterLigne(*this,Contexte))
{
fclose(Fichier);
return false;
}
}
}
fclose(Fichier);
return true;
} |
on appelle charger depuis le main de cette fa�on :
if(Produit.Charger("produit.txt"))printf("OK");
Voyez vous ce qui cloche ?
Edit :Je viens avec du nouveau :si je mets un autre fichier txt, �a fonctionne, mais pas avec le mien.
j'obtiens ce message d'erreur :
L'instruction � "0x004082d0" emploie l'adresse m�moire "0x00000000000" la m�moire ne peut pas �tre read.
je viens encore avec du nouveau :
Quand le fichier est vide, il charger j'ai OK, par contre d�s que j'ai une ligne dans le fichier, �a plante avec le message ci-dessus.
Merci d'avance.
beegees
Partager