お世話になってます。
指定のディレクトリにあるフォルダ名を取得方法はありますでしょうか?
たとえば、c:\AA\BB以下のディレクトリにCCやDDのフォルダがあった場合、これらのフォルダ名を取得したいのですが、良い方法はありますでしょうか?
よろしくお願いします。
FindFirst、FindNextでOK。引数には faDirectoryを。
サブフォルダもなら、再帰で。
暇だったんで勉強ついでに作ってみました。
ミスがあるかも・・・?
(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;
できました。
普通の方法さん、F.Nさんありがとうございました。