Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: Работа с текстовым файлом, обработка строк

  1. #11
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Может быть @Евгений Кислов или кто о еще имел опыт с подобным
    Сформулируйте, пожалуйста, конкретные вопросы, которые у вас остались к данному моменту (и которые будут заканчиваться знаком вопроса).

  2. #12

    По умолчанию

    Евгений Кислов,

    1. Имеются ли какие-либо библиотеки/скрипты или иные способы записи текстового файла в кодировке UTF-16, что бы имелась возможность записи WSTRING переменных, или преобразование текстовых файлов из UTF-8 в UTF-16 внутренними ресурсами CODESYS?
    2. Имеется ли возможность чтения и присваивания переменной STRING/WSTRING (или группе переменных) более 255 символов? Если да, то можно ли найти где либо пример реализации данного процесса?
    3. Если отсутствует возможность записи файлов формата UTF16, возможно ли реализовать условный "scroll bar" для возможности перелистывания текста в текстовом поле, если весь не уместится? Если возможно примеры реализации или укажите с какой стороны начать копать

    Спасибо,

  3. #13
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от ShikuS Посмотреть сообщение
    Евгений Кислов,

    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

  4. #14

    По умолчанию

    ...ну, можно:
    * Закосить под ДРЕГ СКАЛА (это я опять тут про Чернобыль начитываюсь, ахахх - там ДРЕГ выдавала логи действий АЭС на принтер) и выводить лог на принтер онлайн
    * Писать его же в файл онлайн (добавили строку в конец файла и всё)
    * Загружать его в массив или какой-то список объектов и выводить в таблицу на визуализации построчно.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  5. #15

    По умолчанию

    Евгений Кислов,

    Спасибо за ответы..

    Нашел почему были иероглифы, сейчас выполнил так:


    Код:
    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,

    Спасибо огромное!
    Последний раз редактировалось ShikuS; 13.12.2023 в 14:58.

  6. #16

    По умолчанию

    Пожалуйста! ^_^
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  7. #17
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от ShikuS Посмотреть сообщение

    Оказывается очень важно:
    1. Добавить к файлу маркер кодировки (UTF16 BE) в моем случае 16#FEFF
    2. Указывать 2*TO_DWORD в размере, иначе обрубает строку, а также нужно WSTRING(40)- указать длину, иначе также становится непонятное форматирование, сохранение в нужном формате.
    ...именно поэтому об этом написано в документе по работе с файлами в п. 6.2. ("Сохранение текстовых файлов в кодировке Unicode")
    https://ftp.owen.ru/CoDeSys3/11_Docu...hives_v3.0.pdf

    Рад, что у вас всё получилось.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Что с файлом?
    от Lihoj в разделе Среда программирования OWEN Logic
    Ответов: 4
    Последнее сообщение: 28.11.2021, 15:48
  2. Списки строк
    от evg3798 в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 14.09.2015, 16:47
  3. Ответов: 4
    Последнее сообщение: 08.07.2014, 22:54
  4. Ответов: 5
    Последнее сообщение: 19.12.2007, 08:31
  5. проблема с лог-файлом
    от Змий в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 22.08.2007, 14:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •