Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Общие вопросы > Как проверить файл на возможность записи? |
Автор: ^D^ima 03.07.19, 06:59 |
Программа запускает батник, результатом которого является создание файла. Время работы батника разное. Нужно как-то зациклить программу, пока этот файл не создастся и сам файл будет доступен для записи, т.к. создается он изначально пустой а потом наполняется. Дальше программа файл ренеймом переносит созданный файл в другую папку. Пробовал так сделать, не получается, не циклится, сразу проходит <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ShellExecute(0, 'open', 'cmd.exe', PChar(S), nil, SW_HIDE); // запуск стороннего батника repeat Try Succes:=True; RenameFile(OutputFolder+ChangeFileExt(ListBox1.Items[ListBox1.ItemIndex],''),OutputFolder+GetUserFromWindows+OutputFileName); Except Succes:=False; End; until succes; Добавлено <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> repeat Try Succes:=True; FS:=TFileStream.Create(OutputFolder+ChangeFileExt(ListBox1.Items[ListBox1.ItemIndex],''),fmOpenWrite); Except Succes:=False; End; until succes; FS.Free; Вот так вродебы пашет, я FS.Free в нужном месте поставил, да и конструкцию не переврал? |
Автор: Gonarh 03.07.19, 08:10 |
Извращенец. Дождись отработки батника. <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> procedure ExecuteFileAndWait(FileName:String;WindowState:Word); var Buffer: array[0..511] of Char; StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation; ExitCode:DWORD; begin StrPCopy(Buffer,FileName); FillChar(StartupInfo,SizeOf(StartupInfo),#0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow:=WindowState; if CreateProcess(nil, Buffer, nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin while WaitforSingleObject(ProcessInfo.hProcess,500)=WAIT_TIMEOUT do application.ProcessMessages; GetExitCodeProcess(ProcessInfo.hProcess, ExitCode); end end; ExecuteFileAndWait(S, SW_HIDE); |
Автор: ^D^ima 03.07.19, 08:44 |
Мудрено, но спасибо |