Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Как удалить файлы?   Найти похожие ветки 

 
Юлия   (2004-02-11 07:45) [0]

Как удалить файлы, названия которых не знаешь?
Нужно удалить все файлы из текущей директории (из которой запускается exe-шник), кроме самого exe-шника. Как это сделать?


 
Anatoly Podgoretsky ©   (2004-02-11 07:46) [1]

ShFileOperation


 
Beat ©   (2004-02-11 08:17) [2]

А шобы узнать делай:
FindFirst
FndNext
FindClose


 
Юлия   (2004-02-11 08:39) [3]

У меня не получается! Там же тоже нужно название файла!


 
Gero ©   (2004-02-11 08:48) [4]

Смотри в FAQ поиск файлов.


 
Anatoly Podgoretsky ©   (2004-02-11 08:54) [5]

Юлия (11.02.04 08:39) [3]
ShFileOperation не требует явного указания имен, можно использовать шаблон *.* и он удалит все файлы, которые можно удалить, а так как запуск из исполнимого, то удалит все кроме самого себя. Примеры использования есть в местом FAQ
Удалять можно как в корзину, так и безвозвратно.


 
Beat ©   (2004-02-11 09:27) [6]

Путь к экзешнику - ExtractFilePath(ParamStr(0))


 
Amoeba ©   (2004-02-11 11:05) [7]

Читаем http://www.delphikingdom.com/mastering/fileshellapi.htm
Это об использовании ShFileOperation. Следует использовать именно это средство.


 
Юлия   (2004-02-12 08:00) [8]

Спасибо большое! Работает... почти...

SetCurrentDirectory( PChar( GetCurrentDir ) );
From := "*.db"+ #0 + #0;
with SHFileOpStruct do
begin
Wnd := Handle;
wFunc := FO_DELETE;
pFrom := @From;
pTo := nil;
fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation( SHFileOpStruct );


Теперь если файлы есть, то они удаляются, и все в порядке.
Если же удалять было нечего, появляется ошибка: "Не удается удалить файл. Не могу произвести чтение из файла или с диска"


 
Beat ©   (2004-02-12 08:29) [9]

Каталог из которого запускается программа НЕ всегда равен текущему каталогу!


 
Anatoly Podgoretsky ©   (2004-02-12 09:05) [10]

Юлия (12.02.04 08:00) [8]

1. Это вот бессмысленно SetCurrentDirectory( PChar(GetCurrentDir)); Папка не меняется и кроме того это делает сама функция. Более полезно вместо этого указать полностью каноническое имя, как d:\path\....\*.db

2. До использования функции полезно прописать всю структуру SHFileOpStruct нулями, тогда не придется делать

pTo := nil;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;

это надо взять за правило при работе с этой функцией

3. "Не удается удалить файл." трудно что либо сказать, по идее этого не должно быть.


 
Юлия   (2004-02-12 10:29) [11]

Насчет SetCurrentDir поняла, спасибо, глупость написала.

А насчет сообщения - мне казалось, что если заключить операторы в try - except - end и запустить exe-шник, ошибок выдаваться не должно. Попробовала - выдаются. Почему? Я не права?


 
Anatoly Podgoretsky ©   (2004-02-12 10:37) [12]

Не знаю. Но try - except - end точно не подойдет, может Wib32Check использовать с предикатом NOT, но кажется это в самой ОС сообщение и до этого не дойдет.


 
Юлия   (2004-02-12 10:38) [13]

а как проверить, существуют файлы, или нет?


 
Anatoly Podgoretsky ©   (2004-02-12 12:23) [14]

FindFirst в нужной папке, маска *.* или *.db



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
3-79550
Крутыш
2004-01-29 23:39
2004.02.25
Вопрос по гриду из пакета Developer Express


1-79862
WG
2004-02-10 17:11
2004.02.25
Автоматическая отправка письма через Outlook


1-79865
h0use
2004-02-09 16:58
2004.02.25
Работа в D8


1-79855
Well
2004-02-10 17:25
2004.02.25
Убрать программу из


1-79754
RUS
2004-02-12 09:58
2004.02.25
Определение завершения процесса?