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 :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
	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 :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 :


Code : S�lectionner tout - Visualiser dans une fen�tre � part
	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