Главная страница
    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.034 c
4-80356
Evgeniy_K
2003-11-03 16:03
2004.02.25
Параметры шрифта при выводе через TextOut


4-80362
Clift
2003-12-17 16:32
2004.02.25
Пуск


1-79919
norman
2004-02-08 22:21
2004.02.25
Ошибка при запуске программы на delphi


1-79800
RUS
2004-02-11 15:55
2004.02.25
Как преобразовать текстовый фал DOS?


6-80075
Makep
2003-12-15 23:38
2004.02.25
Прослушивание UDP порта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский