Сформулируйте, пожалуйста, конкретные вопросы, которые у вас остались к данному моменту (и которые будут заканчиваться знаком вопроса).Цитата:
Может быть @Евгений Кислов или кто о еще имел опыт с подобным
Вид для печати
Сформулируйте, пожалуйста, конкретные вопросы, которые у вас остались к данному моменту (и которые будут заканчиваться знаком вопроса).Цитата:
Может быть @Евгений Кислов или кто о еще имел опыт с подобным
Евгений Кислов,
1. Имеются ли какие-либо библиотеки/скрипты или иные способы записи текстового файла в кодировке UTF-16, что бы имелась возможность записи WSTRING переменных, или преобразование текстовых файлов из UTF-8 в UTF-16 внутренними ресурсами CODESYS?
2. Имеется ли возможность чтения и присваивания переменной STRING/WSTRING (или группе переменных) более 255 символов? Если да, то можно ли найти где либо пример реализации данного процесса?
3. Если отсутствует возможность записи файлов формата UTF16, возможно ли реализовать условный "scroll bar" для возможности перелистывания текста в текстовом поле, если весь не уместится? Если возможно примеры реализации или укажите с какой стороны начать копать
Спасибо,
1.
1.1. Да. Функции и ФБ записи в файл принимают на вход указатель на записываемые данные - непринципиально, что именно расположено по этому указателю.
1.2. Да. См. библиотеку CmpSysExec, которая позволяет вызывать утилиты Linux, и утилиту iconv, которая позволяет изменять кодировку файлов.
https://linux.die.net/man/1/iconv
2. Да. Ограничение в 255 символов не связано с типами STRING/WSTRING - это ограничение библиотек Standard/Standard64.
См. библиотеку StringUtils, которая позволяет работать со строками любых размеров.
https://content.helpme-codesys.com/e...lic-Parts.html
...ну, можно:
* Закосить под ДРЕГ СКАЛА (это я опять тут про Чернобыль начитываюсь, ахахх - там ДРЕГ выдавала логи действий АЭС на принтер) и выводить лог на принтер онлайн
* Писать его же в файл онлайн (добавили строку в конец файла и всё)
* Загружать его в массив или какой-то список объектов и выводить в таблицу на визуализации построчно.
Евгений Кислов,
Спасибо за ответы..
Нашел почему были иероглифы, сейчас выполнил так:
Оказывается очень важно:Код:wsByteOrderMark[0] := 16#FEFF;
hFile:=SysFile.SysFileOpen(strFileName, am := sysfile.AM_APPEND_PLUS, ADR(udiFileErrorCode));
wPrintLine:=WCONCAT( wsByteOrderMark," ");
wPrintLine:=WCONCAT("Версия ПО: ", OSU.CP1251_TO_UNICODE(sSterPV));
wPrintLine:=WCONCAT(wPrintLine, "$N");
SysFile.SysFileWrite(hFile, ADR(wPrintLine), 2*TO_DWORD(WLEN(wPrintLine)), ADR(udiFileErrorCode));
SysFile.SysFileClose(hFile);
1. Добавить к файлу маркер кодировки (UTF16 BE) в моем случае 16#FEFF
2. Указывать 2*TO_DWORD в размере, иначе обрубает строку, а также нужно WSTRING(40)- указать длину, иначе также становится непонятное форматирование, сохранение в нужном формате.
Таким образом отделался малой кровью)
Евгений Кислов, Cs-Cs,
Спасибо огромное!
Пожалуйста! ^_^
...именно поэтому об этом написано в документе по работе с файлами в п. 6.2. ("Сохранение текстовых файлов в кодировке Unicode")
https://ftp.owen.ru/CoDeSys3/11_Docu...hives_v3.0.pdf
Рад, что у вас всё получилось.