Показать сообщение отдельно
  #1  
Старый 08.02.2012, 22:27
Siropchik Siropchik вне форума
Прохожий
 
Регистрация: 07.02.2012
Сообщения: 22
Репутация: 10
По умолчанию Как правильно проверить освободился фаил или нет?

В этой процедуре программа зацикливается, реагирует на все кроме кнопки завершения . Есть подозрение что в цикле while not RenameFile(FlacName+'.wav',FlacName+'t.wav') do Application.ProcessMessages;
возможно по какой то причине фаил не создан
Подскажите пожалуйста как лучше решить и обойти эту проблему?
программа может проработать 1минуту , а может и 10 мин.

PHP код:
procedure SaveFlac(FlacName:string);
var
fw:file of byte;
i:integer;
hfhwnd;
begin
    iniWav
;  //инициализировать структуру Wave
    
assignFile(fw,FlacName+'.wav'); 
    
rewrite(fw);   
    
blockWrite(fw,waveHdr,sizeOf(waveHdr)); //записать заголовок  wave
    
blockWrite(fw,proc_buf[0],qz); 
    
closeFile(fw);        
    while 
not RenameFile(FlacName+'.wav',FlacName+'t.wav') do Application.ProcessMessages;  

    
ShellExecute(hf'open''flac.exe'PChar(' -F '+FlacName+'t.wav'), nilSW_HIDE);
    while 
not RenameFile(FlacName+'t.flac',FlacName+'.flac') do Application.ProcessMessages;  

    
DeleteFile(FlacName+'t.wav');
 
end;
End
Ответить с цитированием