Я пытаюсь перечислить все каталоги в данном каталоге. У меня есть этот код:
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
, но я чувствую, что он делает все окольным путем, и должен быть правильный способ сделать это.