У меня возникли проблемы с написанием кода для процедуры, которая откроет папку каталога и удалит все файлы внутри нее рекурсивно, чтобы я мог, в свою очередь, сам удалить папку. У меня не будет проблем с рекурсивной процедурой, но я не могу заставить функции FindFirst/FindNext/FindClose работать правильно. Процедура, приведенная ниже, должна искать текущий каталог для любых файлов любого типа (однако я могу злоупотреблять строковыми подстановочными знаками, я не нашел много информации о синтаксисе их использования).Как заставить FindFirst искать файлы в текущем каталоге?
procedure TForm1.Button1Click(Sender: TObject);
var SR: TSearchRec;
begin
ShowMessage(GetCurrentDir);
if (FindFirst('\*.*',faAnyFile,SR)=0) then
begin
repeat
ShowMessage(SR.Name);
until FindNext(SR)<>0;
FindClose(SR);
end
else begin
ShowMessage('No matching files found');
end;
end;
Прямо сейчас, кажется, что независимо от того, что я положил в для файла, процедура не находит каких-либо файлов и всегда возвращает «Ничего не найдено файлов» сообщение.
Вы пытались быть явным о пути в своем вызове 'FindFirst'? Кроме того, вы знаете, что «текущий» каталог может быть любым, поэтому вы собираетесь навсегда удалить случайный каталог в вашей системе пользователя? –
@AndreasRejbrand - В реальном коде, который я использую, у меня есть текущий каталог, определенный прямо над этим, используя функцию SetCurrentDir, но я опустил это, потому что он довольно длинный и не нужен для моей проблемы. У меня есть текущий каталог, отображаемый в сообщении в начале процедуры, чтобы я мог видеть, в какой директории я работаю. И да, я попытался быть явным. Я даже поместил строку для определенного файла, который я ищу (например, «C: \ Program Files \ Test.txt») –
По-прежнему возможно, что функция API '' FindFirstFile' (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx) не работает, если не задан полностью определенный путь. Может быть, это не заботит текущий рабочий каталог? В любом случае, попробовали ли вы просто заменить '\ *. *' На '*. *'? –