Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизКак удалить файлы? Найти похожие ветки
← →
Юлия (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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c