指定ディレクトリにあるフォルダ名の取得方法

解決


めんぼ  2007-11-23 20:53:37  No: 28634  IP: [192.*.*.*]

お世話になってます。
指定のディレクトリにあるフォルダ名を取得方法はありますでしょうか?
たとえば、c:\AA\BB以下のディレクトリにCCやDDのフォルダがあった場合、これらのフォルダ名を取得したいのですが、良い方法はありますでしょうか?
よろしくお願いします。

編集    削除
普通の方法  2007-11-23 20:58:45  No: 28635  IP: [192.*.*.*]

FindFirst、FindNextでOK。引数には faDirectoryを。
サブフォルダもなら、再帰で。

編集    削除
F.N  2007-11-24 01:36:35  No: 28636  IP: [192.*.*.*]

暇だったんで勉強ついでに作ってみました。
ミスがあるかも・・・?
(Edit,Button,ListBoxを1個ずつ置いて実行してください。)

//サブフォルダが見つかったときの処理
procedure OnSubDirFound(dir: string);
begin
  Form1.ListBox1.Items.Add(dir);
end;

//再帰的にサブフォルダを探索
procedure _EnumSubDirs(dir: string);
var
  sr: TSearchRec;
begin
  OnSubDirFound(dir);
  if FindFirst(dir+'*', faDirectory, sr)=0 then begin
    repeat
      if ((sr.Attr and faDirectory)=sr.Attr)and(sr.Name<>'.')and(sr.Name<>'..') then begin
        _EnumSubDirs(dir+sr.Name+'\');
      end;
    until FindNext(sr)<>0;
    FindClose(sr);
  end;
end;

//必ずパスの最後が'\'になるように
procedure EnumSubDirs(dir: string);
begin
  _EnumSubDirs(IncludeTrailingPathDelimiter(dir));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumSubDirs(Edit1.Text);
end;

編集    削除
めんぼ  2007-11-24 20:30:32  No: 28637  IP: [192.*.*.*]

できました。
普通の方法さん、F.Nさんありがとうございました。

編集    削除