Bonjour � tous,

J'utilise un CFile pour lire un fichier texte depuis la fin. Le but est d'�viter de parcourir tout le fichier qui peut-�tre tr�s grand (plusieurs m�ga...) pour gagner du temps.
L'utilisation est un peu particuli�re car le fichier lu est continuellement �crit, mais de toutes fa�ons je ne cherche pas � r�cup�rer les lignes qui ont �t� �crites entre le moment o� j'ai ouvert le fichier et celui o� des lignes ont �t� rajout�es.
Le probl�me est que j'ai le message d'erreur suivant qui appara�t : "Seek failed on an unnamed file".

J'ai essay� mon code sur un fichier 'statique' et l�, pas de probl�me.

Est-ce que ma m�thode est bonne ?

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
	CFile f;
	CFileException e;
	CString sLine = "";
	int iLinesNumber = 0;
	bool bError =false;
 
	if(!f.Open(sLogFilePath,CFile::modeRead,&e))
		return -1;
 
	int iShiftFromEnd = -1;
	char cCurrentChar = ' ';
	CString sTemp;
	CStringArray oFileNamesArray;
	oFileNamesArray.RemoveAll();
 
	while(iLinesNumber < m_MaxDefect && !bError)	//on lit chaque ligne du fichier en partant de la fin
	{
		f.Seek(iShiftFromEnd,CFile::end);
		if(f.Read(&cCurrentChar,1) == 0)
			bError = TRUE;
 
		if(cCurrentChar == '\n')			//fin d'une ligne
		{
			if(sLine.Find("&&&",0)==0)		//c'est une ligne qui contient un nom de fichier
			{
				ReadFileNameInLine(sLine,sTemp);	// extraction du nom du fichier
 
				oFileNamesArray.Add(m_ImageDirectory + '\\' + sTemp);
 
				iLinesNumber ++;
			}
			sLine = "";	//on efface la ligne dans tous les cas
		}
		else
			sLine.Insert(0,cCurrentChar);
 
		iShiftFromEnd--;
	}
 
	f.Close();