Вероятно кто-то подскажет решение по своему опыту или как обойти эту проблему\ввести проверку. Есть такой код:
Считывается фаил весом до 10 мб. (может быть несколько фаилов, например 5 фаилов, считанные по очереди (их содержимое) и записанные по очереди в один). Затем запускается программа, которая загружает все записанное из Folder2\2.txt в базу данных. Затем все удаляется и по новой.
Проблема из наблюдений... Бывает 2.txt не дописывается до конца, т.е. обрыв данных происходит, FileWrite() закончил работу, FileClose() выполнился и пошел RunWait... А данные в 2.txt не все успело записать, либо как подозреваю, в скрипте все это выполнено, а на сам жесткий диск не успело записаться\отобразить, когда начинает выполнять RunWait. Получается вопрос, как ввести проверку на то, что после FileClose() фаил полностью записался на диск. Пробовал ставить Sleep(250), пробовал 1000. Не помогает, все равно иногда не успевает все записать и проскакивает "битый фаил" в базу данных.
Есть также подозрения на команду FileDelete() после RunWait()... И перед ней пробовал ставить паузы. Но все равно... Не помогает.
Есть машины на которых все идеально работает, без каких-либо проблем. А есть машины, их в меньшинстве и независимо от операционной системы... Происходят сбои описанные выше. :stars: Пока из мыслей, не знаю поможет ли или улучшить ли ситуацию. Когда например 5 фаилов, то не писать их по очереди, а сначала все 5 считать, объединить в одну переменную и записать разом, но... Почему-то кажется не решит это проблемы.
Код:
$Data = FileRead(@ScriptDir&"\Folder\1.txt")
$File = FileOpen(@ScriptDir&"\Folder2\2.txt", 17)
FileWrite($File, $Data)
FileClose($File)
RunWait(@ScriptDir&"\1.exe", "", @SW_HIDE)
FileDelete(@ScriptDir&"\Folder2\2.txt")
Считывается фаил весом до 10 мб. (может быть несколько фаилов, например 5 фаилов, считанные по очереди (их содержимое) и записанные по очереди в один). Затем запускается программа, которая загружает все записанное из Folder2\2.txt в базу данных. Затем все удаляется и по новой.
Проблема из наблюдений... Бывает 2.txt не дописывается до конца, т.е. обрыв данных происходит, FileWrite() закончил работу, FileClose() выполнился и пошел RunWait... А данные в 2.txt не все успело записать, либо как подозреваю, в скрипте все это выполнено, а на сам жесткий диск не успело записаться\отобразить, когда начинает выполнять RunWait. Получается вопрос, как ввести проверку на то, что после FileClose() фаил полностью записался на диск. Пробовал ставить Sleep(250), пробовал 1000. Не помогает, все равно иногда не успевает все записать и проскакивает "битый фаил" в базу данных.
Есть также подозрения на команду FileDelete() после RunWait()... И перед ней пробовал ставить паузы. Но все равно... Не помогает.
Есть машины на которых все идеально работает, без каких-либо проблем. А есть машины, их в меньшинстве и независимо от операционной системы... Происходят сбои описанные выше. :stars: Пока из мыслей, не знаю поможет ли или улучшить ли ситуацию. Когда например 5 фаилов, то не писать их по очереди, а сначала все 5 считать, объединить в одну переменную и записать разом, но... Почему-то кажется не решит это проблемы.