Главная страница
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.037 c
4-80364
Rimd
2003-12-20 16:46
2004.02.25
StringGrid и API


6-80062
Anet
2003-12-16 13:09
2004.02.25
Отследить вход пользователя в сеть


14-80202
Begin
2004-01-30 18:58
2004.02.25
Подскажите, плиз... Лицензионная копия Delphi 7....


1-80004
jeka_t
2004-02-13 11:38
2004.02.25
Почему метод AddStrings не пашет в классе TStrings?


14-80247
cyborg
2004-02-03 21:05
2004.02.25
Регистрация