1 (изменено: unicorn79, 2021-08-02 13:13:07)

Тема: AHK: Множественная запись в txt файл несколькими разными .ahk

Добрый день, уважаемые!
Подскажите пожалуйста, хочу организовать множественные операции чтения-записи в txt файл несколькими параллельно работающими.ahk-файлами.

Использую известную библиотеку TF https://github.com/hi5/TF , но метод чтения-записи, уверен не важен, важно мне понять суть..
С чтением более-менее всё понятно, а вот с записью в файл вопрос...
Если я буду средствами ahk из разных скриптов (!) писать в один и тот же файл - не получится ли так, при больших объёмах операций, что один ahk откроет файл для записи, запишет туда результат, сохранит файл, а в это же время другой скрипт сделает свою запись в этот же файл и так далее... Не будет ли здесь конфликта записи, запрета одновременного доступа к файлу и тд.? Как наиболее правильно это реализовать при работе с одним txt? Предполагаю, что файл как-то нужно блокировать в пределах одного скрипта, чтоб другие скрипты не могли в этот файл в этот момент писать... При этом чтоб каждый скрипт перед началом операций записи предварительно проверял, "свободен" ли сейчас этот файл и не занят другими...

Оговорюсь, что интересует именно корректный метод работы с .txt, (не с sql, xlsx и .т.д).
Спасибо!

2

Re: AHK: Множественная запись в txt файл несколькими разными .ahk

Никогда не пробовал писать в один файл одновременно из разных скриптов, и не знаю о библиотеке TF, но если нужно поставить запись в очередь, можно использовать, например, такой алгоритм. Писать в файл должен один скрипт, остальные должны посылать ему текст сообщением WM_COPYDATA и проверять ErrorLevel, если true — значит успешно, если false — послать ещё раз.

А вообще наверно достаточно просто попытаться открыть файл на запись:

File := FileOpen(filePath, "w")
MsgBox, % IsObject(File)

Если выдаст false, значит файл занят.
Также скорее всего можно попытаться писать текст в файл командой FileAppend и проверить ErrorLevel, либо использовать try-catch.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Множественная запись в txt файл несколькими разными .ahk

teadrinker

Спасибо! Попробую!