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 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
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 : 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; } }
Partager