|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как правильно проверить освободился фаил или нет?
В этой процедуре программа зацикливается, реагирует на все кроме кнопки завершения . Есть подозрение что в цикле while not RenameFile(FlacName+'.wav',FlacName+'t.wav') do Application.ProcessMessages;
возможно по какой то причине фаил не создан Подскажите пожалуйста как лучше решить и обойти эту проблему? программа может проработать 1минуту , а может и 10 мин. PHP код:
Последний раз редактировалось Siropchik, 08.02.2012 в 22:34. |
#2
|
||||
|
||||
Скорее всего в while. Например, если файл не найден. Или если он открыт другим процессом. Хотя в код особо не вчитывался.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Я перед циклом фаил создаю и записываю в него данные
А сам цикл нужен для того что бы подождать когда фаил освободится от других процессов, что бы потом можно было запустить преобразования файла в другой формат |
#4
|
||||
|
||||
Посмотри использование ключа {$I+/-}
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
Честно говоря я не знаю что это за зверь, я не профессионал
я так понял это деректива , но где ее прописывать? Цитата:
Последний раз редактировалось Siropchik, 08.02.2012 в 22:56. |
#6
|
||||
|
||||
Код:
{$I-} assignFile(fw,FlacName+'.wav'); rewrite(fw); if IOResult = 0 then begin blockWrite(fw,waveHdr,sizeOf(waveHdr)); //записать заголовок wave blockWrite(fw,proc_buf[0],qz); closeFile(fw); end; {$I+} Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 08.02.2012 в 23:04. |
#7
|
|||
|
|||
Сделал как написано , теперь подвисает сразу
|
#8
|
|||
|
|||
Цитата:
Вот так пойдет if not FileExists(FlacName+'.wav') then Exit; Последний раз редактировалось Siropchik, 08.02.2012 в 23:09. |
#9
|
||||
|
||||
Вот и ищи где загвоздка.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
Странно но все равно виснет
еще сделал проверку файла после ShellExecute но все так же и виснет |
#11
|
||||
|
||||
"Прошагать" пробовал?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
|||
|
|||
Щас попробую
|
#13
|
|||
|
|||
Выяснил что зависалово начинается в цикле после ShellExecute
хотя фаил создается на диск но не переименовывается Прошагать не получается, даже на Break не реагирует PHP код:
|
#14
|
|||
|
|||
получается здесь меня выкидывает из процедуры и по этому фаил не переименовывается
Цитата:
|
#15
|
|||
|
|||
Проработал 5 мин. и завис
Незнаю что туда кроме Sleep можно приткнуть Сделал так: Цитата:
Посоветуйте решение Последний раз редактировалось Siropchik, 08.02.2012 в 23:57. |