我想列出给定目录中的所有目录。我有这样的代码:即使与faDirectory一起使用,FindNext也会返回文件名
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
和家庭只返回目录的名称。我究竟做错了什么?如果我将其更改为
if FindFirst(folder, faDirectory, srec) = 0 then
然后,它只能说明folder
名称,但不是绝对路径(相对于folder + '/..'
),之后退出。
我意识到我可以通过确认(srec.Attr and faDirectory) = faDirectory
来检查它是否是一个目录,但我觉得这样做是迂回的做法,应该有一个正确的方法来做到这一点。
谢谢,我会用这个。但是有什么想法,我的第一次尝试有什么问题? – 2011-12-30 07:04:57
检查更新的答案 – RRUZ 2011-12-30 07:11:19
啊我看到了,非常感谢。 – 2011-12-30 07:14:16