我正在尝试列出给定目录中的所有目录。我有这个代码:
var
srec: TSearchRec;
begin
// folder is some absolute path of a folder
if FindFirst(folder + PathDelim + '*', faDirectory, srec) = 0 then
try
repeat
if (srec.Name <> '.') and (srec.Name <> '..') then
ShowMessage(srec.Name);
until FindNext(srec) <> 0;
finally
FindClose(srec);
end;
但出于某种原因,我收到有关文件名的消息,而不仅仅是目录。我认为使用
faDirectory
会使 FindFirst
和 family 只返回目录名称。我究竟做错了什么?如果我把它改成if FindFirst(folder, faDirectory, srec) = 0 then
然后它只显示
folder
的名称而不是绝对路径(相对于 folder + '/..'
)然后退出。我意识到我可以通过确保
(srec.Attr and faDirectory) = faDirectory
来检查它是否是一个目录,但我觉得这是一种迂回的方式,应该有一种正确的方式来做。 最佳答案
如果您使用的是 delphi xe,请检查 TDirectory.GetDirectories
函数。
SysUtils.FindFirst
文档可以解决您的问题。
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;