Здравствуйте,
Есть проблема, которую никак не могу победить:
if (TextFileOpen('report.txt', 'c:\', fomRewrite, fcpUTF8) = False) then
ShowMessageClient(GetClientName, 'Внимание!', 'Ошибка открытия файла', clGray, clBlack)
else
// Тут пишем в файл и т.д. Если указываю полный путь (например, как в коде выше 'c:\') получаю ошибку открытия файла. Если путь пустой (''), файл открывается и записывается в папке проекта на сервере, но тогда каким образом открыть его на клиенте внешней программой типа notepad?
Здравствуйте.
Если путь пустой (''), файл открывается и записывается в папке проекта на сервере, но тогда каким образом открыть его на клиенте внешней программой типа notepad?
Все процедуры для работы с файлами (https://simple-scada.com/help/script/workfile.html) работают только на серверном ПК. Для запуска программ (например блокнота) на клиентах нужно использовать процедуру RunApplication (https://simple-scada.com/help/script/runapp.html), например можно разместить на мнемосхеме кнопку и на событие OnClick этой кнопки написать следующий код:
begin
{ запускаем блокнот и открываем файл "File.txt" на клиенте который нажал кнопку }
RunApplication(GetClientName, 'notepad.exe', 'D:\File.txt');
end.
2) Самое главное, не нашел способ создавать файл на том клиенте, который вызвал скрипт. GetProgramPathClient выдает путь к папке на клиенте, но файл с таким путем создается на сервере.
Создавать файлы на клиентах через процедуры для работы с файлами (https://simple-scada.com/help/script/workfile.html) нельзя. Они работают только на сервере.
Скада выходит на этапе проверки на существование файла - File not exitst. Журнал перегружен сообщениями об ошибках другого плана, на эту тему ничего не нашёл.
Путь к файлу формирую следующим образом (положив его предварительно в корень 'D:\'):
aPath := 'D:\' + objectId + '_mconst.ini';
Если убрать начало 'D:\', то Скада будет искать его в файлах проекта, что успешно проходит. А в данном случае просто не видит, права на файл сделал для всех Full access.
Система - Windows 10 Home.
Вы открываете файл через TextFileOpen? Если да, то у неё есть два отдельных параметра, первый - имя файла, второй - путь к файлу, см. руководство (https://simple-scada.com/help/script/textfileopen.html). Возможно Вы передаёте всё одним параметром? Если да, то это неправильно. Пример:
TextFileOpen(objectId + '_mconst.ini', 'D:\', fomReset, fcpUTF8);
Если убрать начало 'D:\', то Скада будет искать его в файлах проекта
Это не потому что Вы убрали 'D:\', а потому что не указали параметр-путь к файлу и оставили его пустым. Прочтите описание параметра APath в руководстве (https://simple-scada.com/help/script/textfileopen.html).
Журнал перегружен сообщениями об ошибках другого плана, на эту тему ничего не нашёл.
Ошибки лучше исправить, чтобы не возникало других проблем.