//上記の例では、実用的な機能だけを使用することを指示し、再帰関数の性質を説明していません。 ユニット Unit1は、インタフェースが使用する Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、 ダイアログ、StdCtrlsを、種類の TForm1 = class(TForm) Button1:TButton; Memo1:TMemo; procedure Button1Click(Sender:TObject); end ; var Form1:TForm1; implementation {$ R * .dfm} //ディレクトリ内のすべてのディレクトリをリストします(ネストを含む) )関数プロシージャ GetDirs(dirName:string ; List:TStrings); var SRec:TSearchRec; {define TSearchRec structure variable} dir: string ; const attr:Integer = faDirectory; {これはフォルダーであることを意味するファイル属性定数} begin dirName:= ExcludeTrailingBackslash(dirName)+ '\' ; {最後のものかどうかわからない;最初に削除してから追加} dir: dirNameに+ = '*' ; {追加\ ;. * * *またはファイルの全て、システムは、ファイル・ディレクトリとして使用される} IF関数は、FindFirst(DIR、ATTR、SRECが)= 0 次いで、 {検索を開始し、そして付与情報にSREC、最初の戻り0を求める} 開始 REPEATを IF(SRec.Attr = ATTR)と {}フォルダ場合 (SRec.Name <> '' )と {負のレベルディレクトリ} (SRec.Name <> '..')次に {ルートディレクトリを除外} begin List.Add(dirName + SRec.Name); {Listで結果を記録する} GetDirs(dirName + SRec.Name、List); {この文は再帰呼び出しであり、文がない場合は、現在のディレクトリのみを検索できます} end ; until(FindNext(SRec)<> 0); {Find next、return 0意味が見つかった} end ; FindClose(SRec); {End search} end ; {Test} プロシージャ TForm1.Button1Click(Sender:TObject); var list: TStrings; リストの開始:= TStringList.Create; GetDirs( 'C:\ Downloads'、list); Memo1.Lines:= list; list.Free; end ; 終わり。
詳細な方法(28)-再帰関数の例:現在のディレクトリの下にあるすべてのネストされたディレクトリを検索
おすすめ
転載: www.cnblogs.com/fansizhe/p/12729746.html
おすすめ
ランキング