Bonjour à tous,

J'ai un petit problème pour traduire une fonction delphi en c++.
Mon code modifié me génère une boucle sans fin.

Code Delphi :
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
 
// Procédure pour compter les fichiers
Function CompteFichiers(Chemin:String):Integer;
Var S:TSearchRec;
Begin
  Chemin:=IncludeTrailingPathDelimiter(Chemin);
  Form1.Label2.Caption:=Chemin;
  Form1.Label2.Refresh;
 
  Result:=0;
  // Recherche de la première entrée du répertoire
  If FindFirst(Chemin+'*.*',faAnyFile,S)=0
  Then Begin
    Repeat
      // Il faut absolument dans le cas d'une procédure récursive ignorer
      // les . et .. qui sont toujours placés en début de répertoire
      // Sinon la procédure va boucler sur elle-même.
      If (S.Name<>'.')And(s.Name<>'..')
      Then Begin
        If (S.Attr And faDirectory)<>0
          // Dans le cas d'un sous-repertoire on appelle la même procédure
          Then Result:=Result+CompteFichiers(Chemin+S.FindData.cFileName)
          // Sinon on compte simplement le fichier
          Else Inc(Result);
      End;
    // Recherche du suivant
    Until FindNext(S)<>0;
    FindClose(S);
  End;
End;
Code C++ :
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
 
int TForm1::Compteur(AnsiString chemin){
TSearchRec S;
int result = 0;
	if (FindFirst(chemin+"*.*",faAnyFile,S)==0){
		do{
			if((S.Name != ".")&&(S.Name != ".."))
			{
				if ((S.Attr && faDirectory) != 0)
				{
					result = result+Compteur(chemin+S.FindData.cFileName);
				}else {
					result++;
				}
			}
		}while(FindNext(S)!=0);
		FindClose(S);
		return result;
	}
}