| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Задержка перед копированием файлов |
| Автор: Nic442 6.5.2006, 18:38 | ||
Есть батник который создает два файла. Я их копирую в разные папки, но дело в том, что перед началом копирования файлы иногда ещё не успевают создаться, и в следствии чего не копируются. (я это проверял так: понастовлял сообщений. При быстром закрытии их вылетала ошибка, при медленном всё нормально работало)
Как мне определить, что файлы уже созданы и можно приступать к копированию??? |
| Автор: Yanis 6.5.2006, 18:44 | ||
|
| Автор: Rouse_ 6.5.2006, 18:52 |
| Yanis, к сожалению если бы изначально все файловые системы были транзакционной модели, то данный код был бы верен. Выход из ситуации: CreateProcess с запуском батника и WaitFor... |
| Автор: Демо 6.5.2006, 19:03 |
| В случае, если фалы создаются консольными приложениями есть еще выход: В конце .bat-файла формировать файл-флажок. А в программе в цикле проверять его наличие. |
| Автор: Yanis 6.5.2006, 19:10 |
| Благодарю за поправку. Я неправильно понял вопрос Nic442'а. |
| Автор: Nic442 6.5.2006, 21:02 |
| Демо, Еще весь прикол в том, что после копирования я запускаю скопированный файл средствами делфи, а файл еще не успевает скопироваться и вылетает ошибка. т.е. до копирования я запускаю батник( сделал там флажок), после копирования я запускаю скопированный файл (но дело еще в том, что он не обезательно будет существовать) А можно пример с CreateProcess... |
| Автор: Демо 6.5.2006, 21:07 |
| Nic442, Ты бы сказал сначала, как файлы создаются. От этого можно уже отталкиваться. Добавлено @ 21:09 Вообще, описал бы весь процесс - что тебе нужно, и какие средства используются на каждом этапе. А то ничего не понятно - что, зачем, как роисходит... |
| Автор: Rouse_ 6.5.2006, 21:26 |
Саня, я бы сказал "ну вы блин даете"... Сам понял что сказал? (А давайте сделаем подводную лодку, а когда она поплывет - запустим из нее торпеду которая когда доплывет, скажет всему миру что лодка уже плавает). В местном факе должен быть... |
| Автор: Демо 6.5.2006, 21:34 | ||
Ну дык вроде понятно. Ну если нет, попробую детальнее... Вот пример .bat-файла с таким условием:
В первых 2-х строках формирование файлов, в последней - формирование файла-флажка. ПРограмма, которая ожидает окончания формирования файлов, ожидает, проверяя периодически в цикле появление файла flag.txt. |
| Автор: Nic442 7.5.2006, 00:39 | ||||
| Rouse_, ВСЕ что я нашел в faq
Объясняю подробнее. (Батник работает с компилятором) Создаю вначале файл с кодом, потом батник. Запускаю батник, он создаёт 3 файла *.exe, *.obj и *.txt(как флаг сгодился и для проги нужен). Первые два файла могут и не создаться, это зависит от кода. Далее я копирую файлы *.obj и *.exe (если есть) в разные папки. И последний шаг - запускаю скопированный экзешник (Тут вторая ошибка. Файлы иногда не успевают скопироваться в другую директорию. Старые с которых копировались файлы удаляются).
|
| Автор: evilbllodydemon 7.5.2006, 09:53 | ||
решение "в лоб"
|
| Автор: Демо 7.5.2006, 11:01 |
| С первым ясно. Решение уже было приведено. А вот это непонятно. |
| Автор: Тутанхамец 7.5.2006, 12:01 |
| А ты bat-файл синхронно запускаешь или асинхронно? Или это уже не в тему? |
| Автор: Nic442 7.5.2006, 15:27 | ||
| по моему разобрался. Глючный батник :-( Не подскажите, можно ли это сделать без батника. Через ShellExecute ???? (т.к. у пользователя ограниченные права на запуск батников и cmd )
|
| Автор: Nic442 7.5.2006, 23:30 | ||
| Батник работает... (Dir='D:\Documents and Settings\kuku\Рабочий стол\ПОТОК Программа на Delphi\EXE') я использую перед запуском батника CharToOem(PChar(Dir),PChar(Dir)); И все работает. Правдо промучался как негр на планктации, чтобы найти ошибку...
|