Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-80358
yaric
2003-11-26 18:08
2004.02.25
Можно ли программно заблокировать лоток CD


14-80128
ИМХО
2004-02-01 02:20
2004.02.25
Сколько нот: 7 или 14


6-80050
smu
2003-12-22 10:10
2004.02.25
Как TNMSMTP связать с ProgressBar?


1-79750
JaoDaoDzen
2004-02-14 12:31
2004.02.25
привязка расширения файла к своей программе


3-79592
nataliK
2004-02-02 16:14
2004.02.25
Query результат запроса выдает ##





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский