Delphi でディレクトリのサブディレクトリを取得しようとしています。この関数を使用しています。
procedure GetSubDirectories(const directory : string; list : TStrings) ;
var
sr : TSearchRec;
begin
try
if FindFirst(IncludeTrailingPathDelimiter(directory) + '*.*', faDirectory, sr) < 0 then
Exit
else
repeat
if ((sr.Attr and faDirectory <> 0) AND (sr.Name <> '.') AND (sr.Name <> '..')) then
List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) ;
until FindNext(sr) <> 0;
finally
SysUtils.FindClose(sr) ;
end;
end;
次に、次のようなことを試しました:
procedure TForm1.FormCreate(Sender: TObject);
var
folders: TStringList;
begin
folders := TStringList.Create;
try
GetSubDirectories('c:\', folders);
ShowMessage(folders.ValueFromIndex[0]);
finally
FreeAndNil(folders);
end;
end;
メッセージボックスに表示される文字列は、たとえば「:\Program Files」です。GetSubDirectories プロシージャにブレークポイントを追加しようとするList.Add
と、var は "C:\Program Files" のようになります。
メッセージ ボックスでドライブ文字が削除されているのはなぜですか?