![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| FMA |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
В своей программе использую сторонний конвертер для перевода исходного файла одного формата в другой. Конвертер запускается с командной строкой! После использования конвертера, удаляю его!
А создаю с помощью TFileStream, имею двоичный "снимок" файла, т.е:
, где
После того как конвертер отработал, удаляю его:
Проблема в том, что иногда файлы не удаляются! Т.е. на некоторых компах все ОК и ниразу не было косяка с удалением, а на других через раз (то удаляются, то нет)! Стабильности появления ошибки выявить не удается! В чем может быть проблема, и как ее решить? |
||||||
|
|||||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
может пытешься удалить пока он еще запущен?
-------------------- Обижено школьников: 8 |
|||
|
||||
| FMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
Да нет. Правда все создается и конвертируется в одной процедуре! Может из-за этого ОС не успевает обрабатывать, т.к. все происходит довольно быстро - файлы создались, отработали, удалились. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
ты дожидаешся конца работы?
-------------------- Обижено школьников: 8 |
|||
|
||||
| FMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
Конечно! (ну или я так думаю)!
Объем конвертируемых файлов мал, пара килобайт! При конвертации идет сплеш-форма, показывающая статус обработки! Для работы конвертера необходимо наличие еще парочки библиотек (создаются по принципу, описанному в первом сообщении). Так вот после завершения удалются или все, или только часть! Всегда по разному! На моем компе удаляется все, и на большинстве тоже (на которых пробывал конечно. У всех начинка разная естественно)! Поставил перед удалением Application.ProcessMessages, может поможет |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
и при чем тут это? или ты синхронизируешся по форме?
Давай прямо: ты вызываешь WaitForSingleObject? -------------------- Обижено школьников: 8 |
|||
|
||||
| FMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
Нет, не вызываю!
Форму показываю, чтобы пользователь видел, что происходит обработка (т.к. могут конвертироваться много файлов), а заодно, чтобы система успела обработать - создать файлы, их использовать и удалить! На форме стоит простой ProgressBar. (Извиняюсь если непонятно выразился ранее насчет формы). Меня в принципе интересует почему система иногда все удаляет, а иногда оставляет часть файлов! Какова может быть причина? |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Причина может быть в том, что на момент попытки удаления файл еще загружен. Для того чтобы значительно понизить такую вероятность нужно перед удалением дождаться завершения процесса. Тогда если тебе что-то и помешает удалить файл, то это по крайней мере будет не результатом твоих собственных действий. А то ты сам себя напугал. Тебе нужен WaitForSingleObject. Первый аргумент - хэндл процесса, второй - время ожидания в милисекундах. Если ты абсолютно уверен что вызываемый процесс не зависнет, то можно указать INFINITE
-------------------- Обижено школьников: 8 |
|||
|
||||
| FMA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
bems, Большое спасибо! Попробую предложенный вариант!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |