Добрый день, уважаемые форумчане! Подскажите как реализовать объединение двух строк в Codesys, одна из входных и результирующая строки могут быть длинее 255 символов.
Добрый день, уважаемые форумчане! Подскажите как реализовать объединение двух строк в Codesys, одна из входных и результирующая строки могут быть длинее 255 символов.
во первых, а зачем такая длинна? Во вторых строка легко может быть превращена в массив байт, а он может быть и больше 255
строка легко может быть превращена в массив байт, а он может быть и больше 255[/QUOTE]
Можете написать пример?
смотрите примеры по смскам или вебсерверу, там это часто используется. Я на телефоне не напишу пример
И всё-таки зачем и откуда в ПЛК строка длиннее 255 символов?
Нет необходимости. Строка — уже массив. И она может быть сколь угодно длинной.строка легко может быть превращена в массив байт, а он может быть и больше 255
Код:VAR s1: STRING; s2: STRING(480); s3: STRING(560); tail, caret: POINTER TO BYTE; END_VAR tail := ADR(s1); caret := ADR(s3); WHILE tail^ <> 0 DO caret^ := tail^; tail := tail + 1; caret := caret + 1; END_WHILE tail := ADR(s2); WHILE tail^ <> 0 DO caret^ := tail^; tail := tail + 1; caret := caret + 1; END_WHILE
Чот я туплю ваще. Воспитался на сях, и даже теперь в голове мысли не возникает строки по-нормальному соединять. А в своём примере специально показал, что строка-результат должна быть не меньше суммы её слагаемых.Более безопасно и пофиг длина
s3 := s1;
Компилятор учтет и LEN и SIZEOF обеих переменныхЛишний проход при выяснении длины. Но можно пренебречь, да.2. Ищем длину str1
3. Копируем в хвост str1 строку str3 пока нет 0 и не вышли за sizeof(str1)-1
Размер по умолчанию — 80 символовНу так объявление STRING(..) - это указание на предельный размерПредел там 2М где-то.
Привет.
Подскажите, а как подсчитать действительную длину длинной строки? Т.е., к примеру, я объявил длину строки 512 символов, но реальная длина - 400..420 символов. Но как узнать, реальную точную длину?
Функция LEN() работает до 255 символов.
Функция SIZEOF() показывает длину строки при инициализации.
Неужели только в цикле искать первый символ с кодом 0 (как в примере выше)?
Вот:
foto004.png
Последний раз редактировалось ВладОвен; 16.05.2022 в 14:08.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk