Приятного времени суток господа!
Хочу сделать что то навроде клинера для личного пользования, но вот встает вопрос.
Сделал так, что программа ищет все интересующие меня файлы и удаляет их сразу же, но если
какой то файл открыт и используется, то выдается ошибка что нельзя удалить и останавливается.
Как можно исключить эту ошибку и если файл используется, то пускай его пропустит и работает дальше? Наброски можно посмотреть чуть ниже
Заранее всем спасибо
code_1673.txt
P.S.
И в догонку.
Как можно сделать поиск нескольких файлов сразу?
Вот например надо мне найти и удалить *.xxx; *.yyy; *.zzz
Сейчас вижу решение только в тройном проходе. Сначало найти и удалить *.xxx, потом *.yyy и т.д.
А хотелось бы за один проход.
Еще раз спасибо большое всем за участие
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
|
|||
карма: 1 |
| ||
файлы: 1 | code_1673.txt [840B] [240] |
Ответов: 3851
Рейтинг: 159
|
|||
-= DriveR =- писал(а): Как можно сделать поиск нескольких файлов сразусделай "несколько" проверок по onSearch |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
-= DriveR =- писал(а): Как можно исключить эту ошибку и если файл используется, то пускай его пропустит и работает дальше?использовать FileOperation -= DriveR =- писал(а): Как можно сделать поиск нескольких файлов сразу?ищем все файлы по маске *.*, далее компонентом FileParts извлекаем расширение и сравниваем с нужными. [size=-2]------ Добавлено в 22:35 сравнивать можно например поиском расширения в строке .xxx;.yyy;.zzz. Если поиск вернул позицию больше нуля, то расширение подходит |
|||
карма: 27 |
|
Ответов: 1305
Рейтинг: 29
|
|||
Dilma писал(а): сравнивать можно например поиском расширения в строке .xxx;.yyy;.zzz. Если поиск вернул позицию больше нуля, то расширение подходитИ удалит файл file.abcd вместе со всеми *.abc Лучше уж первый способ Dilma писал(а): далее компонентом FileParts извлекаем расширение и сравниваем с нужными
|
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
v258, конкретная реализация зависит от конкретной задачи. Я же привел только идею. Скажем ситуация с 4х буквенными расширениями разрешается путем прибавки в конец расширения найденного файла символа ";" все с тем же поиском по одной строке.
|
|||
карма: 27 |
|
Ответов: 817
Рейтинг: 52
|
|||
2 Dilma
-= DriveR =- писал(а) Как можно исключить эту ошибку и если файл используется, то пускай его пропустит и работает дальше? использовать FileOperation Такого компонента не нашел, зато нашел FileTools (Файловые операции) Но он не позволяет отключить ошибку, или я не туда посмотрел ? |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Используй FileSearch.doSearch с маской *.*
По onSearch проверяй чего хочешь, холь левой ногой ухо чеши Например FileTools.doFileExists По результатам - удаляй через тот же FileTools |
|||
карма: 9 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
-= DriveR =- писал(а): Как можно исключить эту ошибку и если файл используется, то пускай его пропустит и работает дальше? |
|||
карма: 25 |
|
Ответов: 817
Рейтинг: 52
|
|||
Проверять "использование" файла перед подачей команды на удаление. А можно немного поподробнее и если не сложно с примером с поиском я вроде разобрался |
|||
карма: 1 |
|
Ответов: 1305
Рейтинг: 29
|
|||
Dilma писал(а): конкретная реализация зависит от конкретной задачи. Я же привел только идею. Скажем ситуация с 4х буквенными расширениями разрешается путем прибавки в конец расширения найденного файла символа ";" все с тем же поиском по одной строкеПо моему, это усложнение простой задачи. Тем более, что никогда нельзя быть уверенным, с чем эта прога может столкнуться в реальной обстановке. Скажем, откуда человек мог бы знать года два назад, что новый Ворд будет сохранять свои документы с расширением .docx. Конечно, это мое сугубое имхо, но когда работаешь с файлами и их расширениями, нужна не приблизительность, а точное указание, чего ты от проги хочешь. Чтобы потом не было мучительно больно |
|||
карма: 0 |
|
Ответов: 817
Рейтинг: 52
|
|||
Во, во!
Именно этот docx меня и вынудил эту программку писать. Господа, подскажите примером, как избавиться от появления ошибки и останова программы |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
-= DriveR =-, например такая схема выдает размер равным 0 для всех файлов, занятых другими программами и недоступными на чтение:
|
|||
карма: 27 |
|
Ответов: 1305
Рейтинг: 29
|
|||
-= DriveR =- писал(а): подскажите примером, как избавиться от появления ошибки и останова программыВозьми мой пример на прошлой странице и установи свойство DelToRecycle=False компонента FileTools. Будет удалять все файлы, пропуская занятые. По крайней мере у меня так получилось [size=-2]------ Добавлено в 12:42 Dilma, а если файлы будут многие и многие мегабайты размером - не приведет ли это к ненужной загрузке памяти? |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Компонент только открывает файл на чтение и не грузит его целиком в память.
|
|||
карма: 27 |
|
Ответов: 817
Рейтинг: 52
|
|||
Не господа, не работает адская машина
code_1674.txt Вот посмотрите. Мои действия: 1. Создаю обычный тхт файл и переименовываю его на *.ххх 2. Создаю обычный doc файл и переименовываю его на *.xxx 3. Запускаю программу и она ругается что удалить нельзя, файл занят. но на самом деле не занят. Если в место компонента FileTools поставить DirTools, то получается тоже самое Но если подставить message, то мы отчетливо видим что значение больше 0 т.е. файл не занят и не используется |
|||
карма: 1 |
| ||
файлы: 1 | code_1674.txt [1.4KB] [232] |