我试图在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
上添加一个breakpoitn,然后var看起来像“C:\ Program Files”。
为什么要在消息框中删除驱动器号?
答案 0 :(得分:2)
ValueFromIndex
要求您在TStringList
上使用键值对,您要查找的内容可能是Strings
的{{1}}属性,这也是默认属性班级。
因此,您可以使用TStringList
或folders[0]