Вопрос: есть какая-нибудь навороченная функция, чтобы можно было грохнуть все файлы по маске? Или только через поиск по TSearchRec?
Спасибо.
Модератор: Модераторы
Сквозняк писал(а):Так есть же системные комманды del и rm. [url]http://ru.wikipedia.org/wiki/Патч_Бармина[/url]
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}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21