Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление файлов 
:(
    Опции темы
FMA
Дата 15.6.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



В своей программе использую сторонний конвертер для перевода исходного файла одного формата в другой. Конвертер запускается с командной строкой! После использования конвертера, удаляю его!
А создаю с помощью TFileStream, имею двоичный "снимок" файла, т.е:
Код

with TFileStream.Create(Path+'\Bag.dll', fmCreate) do
     try
        Write(BagDLL, 147456);
     finally
        Free;
     end;

with TFileStream.Create(Path+'\WXX.exe', fmCreate) do
     try
        Write(WXXEXE, 40960);
     finally
        Free;
     end;

, где
Код

BagDLL : array [0..147456-1] of Byte =
  (
    77,90,144,0,3,0,0,0,4,0,0,0,255,255,0,0,
    184,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0.... )


После того как конвертер отработал, удаляю его:
Код

DeleteFile(Path+'\Bag.dll');
DeleteFile(Path+'\WXX.exe');


Проблема в том, что иногда файлы не удаляются! Т.е. на некоторых компах все ОК и ниразу не было косяка с удалением, а на других через раз (то удаляются, то нет)! Стабильности появления ошибки выявить не удается! 
В чем может быть проблема, и как ее решить?
PM MAIL   Вверх
bems
Дата 15.6.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



может пытешься удалить пока он еще запущен?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
FMA
Дата 16.6.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Цитата(bems @ 15.6.2009,  19:23)
может пытешься удалить пока он еще запущен?

Да нет. Правда все создается и конвертируется в одной процедуре! Может из-за этого ОС не успевает обрабатывать, т.к. все происходит довольно быстро - файлы создались, отработали, удалились.
PM MAIL   Вверх
bems
Дата 16.6.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



ты дожидаешся конца работы?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
FMA
Дата 16.6.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Конечно! (ну или я так думаю)!  smile 
Объем конвертируемых файлов мал, пара килобайт! При конвертации идет сплеш-форма, показывающая статус обработки!
Для работы конвертера необходимо наличие еще парочки библиотек (создаются по принципу, описанному в первом сообщении).
Так вот после завершения удалются или все, или только часть! Всегда по разному! На моем компе удаляется все, и на большинстве тоже (на которых пробывал конечно. У всех начинка разная естественно)!

Поставил перед удалением Application.ProcessMessages, может поможет  smile , буду дальше тестить! 
PM MAIL   Вверх
bems
Дата 16.6.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(FMA @  16.6.2009,  14:51 Найти цитируемый пост)
При конвертации идет сплеш-форма, показывающая статус обработки!
и при чем тут это? или ты синхронизируешся по форме?
Давай прямо: ты вызываешь WaitForSingleObject?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
FMA
Дата 16.6.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Нет, не вызываю!
Форму показываю, чтобы пользователь видел, что происходит обработка (т.к. могут конвертироваться много файлов), а заодно, чтобы система успела обработать - создать файлы, их использовать и удалить!
На форме стоит простой ProgressBar. (Извиняюсь если непонятно выразился ранее насчет формы). 
Меня в принципе интересует почему система иногда все удаляет, а иногда оставляет часть файлов! Какова может быть причина? 

PM MAIL   Вверх
bems
Дата 16.6.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Причина может быть в том, что на момент попытки удаления файл еще загружен. Для того чтобы значительно понизить такую вероятность нужно перед удалением дождаться  завершения процесса. Тогда если тебе что-то и помешает удалить файл, то это по крайней мере будет не результатом твоих собственных действий. А то ты сам себя напугал. Тебе нужен WaitForSingleObject. Первый аргумент - хэндл процесса, второй - время ожидания в милисекундах. Если ты абсолютно уверен что вызываемый процесс не зависнет, то можно указать INFINITE


--------------------
Обижено школьников: 8
PM MAIL   Вверх
FMA
Дата 17.6.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



bems, Большое спасибо! Попробую предложенный вариант! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.