Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];




Вниз

Удалить все файлы из каталога 


ruslan_as   (2002-04-19 11:12) [0]

Помогите кодом!!! Вопрос обсуждался, но конкретного кода не нашел.Нужно удалить все файлы из каталога C:\Test. Пробовал через FindFirst и DeleteFile воспринимает любой шаблон типа *.tmp но не воспринимает *.* , а какие файлы с каким расширением у меня могут появиться в этом каталоге я не знаю.



Alx2   (2002-04-19 11:26) [1]

Можно вызвать из программы команду del c:\test\*.*



ruslan_as   (2002-04-19 11:31) [2]

Подходит! Только как ее вызвать. Если можно подробнее...



panov   (2002-04-19 11:32) [3]

http://delphi.mastak.ru/articles/advice/top.html#q12



Alx2   (2002-04-19 11:34) [4]

В Win2k:
WinExec("cmd.exe /c del /q /f c:\test\*.*",0);
95/98:
WinExec("command.com /c del /q /f c:\test\*.*",0);



ruslan_as   (2002-04-19 11:43) [5]

Подходит! Только как ее вызвать. Если можно подробнее...



Alx2   (2002-04-19 11:58) [6]

Дык написал же:)
Alx2 © (19.04.02 11:34)



Miwa   (2002-04-19 12:00) [7]

Вообще-то, я когдато спрашивал что-то похожее, и тогда результат обсуждения ветки был выложен в факе. Только не через winexec, а через FindFirst, FindNext.



Miwa   (2002-04-19 12:01) [8]

Вообще-то, я когдато спрашивал что-то похожее, и тогда результат обсуждения ветки был выложен в факе. Только не через winexec, а через FindFirst, FindNext.



Alx2   (2002-04-19 12:10) [9]

panov уже дал линк на фак. Там все готовое.



ruslan_as   (2002-04-19 12:37) [10]

Спасибо за линк - класс. Тут я тоже поискал и нашел такой код:

FUNCTION DELETEFILEWITHUNDO( SFILENAME : STRING ) : BOOLEAN;
VAR FOS : TSHFILEOPSTRUCT;
BEGIN
SFILENAME:= SFILENAME+#0;
FILLCHAR( FOS, SIZEOF( FOS ), 0 );
WITH FOS DO BEGIN
WFUNC := FO_DELETE;
PFROM := PCHAR( SFILENAME );
FFLAGS := FOF_ALLOWUNDO OR FOF_NOCONFIRMATION OR FOF_SILENT;
END;
RESULT := ( 0 = SHFILEOPERATION( FOS ) );
END;

Может кому пригодиться...



Nikolay M.   (2002-04-19 14:40) [11]

А почему ClearDir из RX не подходит? Если RX нет, вот код (Delete - удалять ли сам каталог):

function ClearDir(const Path: string; Delete: Boolean): Boolean;
const
{$IFDEF WIN32}
FileNotFound = 18;
{$ELSE}
FileNotFound = -18;
{$ENDIF}
var
FileInfo: TSearchRec;
DosCode: Integer;
begin
Result := DirExists(Path);
if not Result then Exit;
DosCode := FindFirst(NormalDir(Path) + "*.*", faAnyFile, FileInfo);
try
while DosCode = 0 do begin
if (FileInfo.Name[1] <> ".") and (FileInfo.Attr <> faVolumeID) then
begin
if (FileInfo.Attr and faDirectory = faDirectory) then
Result := ClearDir(NormalDir(Path) + FileInfo.Name, Delete) and Result
else if (FileInfo.Attr and faVolumeID <> faVolumeID) then begin
if (FileInfo.Attr and faReadOnly = faReadOnly) then
FileSetAttr(NormalDir(Path) + FileInfo.Name, faArchive);
Result := DeleteFile(NormalDir(Path) + FileInfo.Name) and Result;
end;
end;
DosCode := FindNext(FileInfo);
end;
finally
FindClose(FileInfo);
end;
if Delete and Result and (DosCode = FileNotFound) and
not ((Length(Path) = 2) and (Path[2] = ":")) then
begin
RmDir(Path);
Result := (IOResult = 0) and Result;
end;
end;




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.022 c
6-2633            VID                   2002-02-16 19:30  2002.05.02  
Отлов появления коннекта


6-2639            yastal                2002-02-19 06:49  2002.05.02  
Как узнать, что на ftp сервере нет файлов, которые необходимо скачивать по маске.


1-2611            SeF                   2002-04-20 13:57  2002.05.02  
shiftstate


14-2684           Alex_LG               2002-03-25 15:17  2002.05.02  
Вопрос не по Дельфи а по С++ :0)


3-2498            IronHawk              2002-04-10 13:00  2002.05.02  
Приветствую Мастеров ! Эт снова Я ! Быстрый поиск по базе ?