Просмотр полной версии : Длинные строки (STRING)
Добрый день, уважаемые форумчане! Подскажите как реализовать объединение двух строк в 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Лишний проход при выяснении длины. Но можно пренебречь, да.
Ну так объявление STRING(..) - это указание на предельный размерРазмер по умолчанию — 80 символов ;) Предел там 2М где-то.
ВладОвен
16.05.2022, 13:16
Привет.
Подскажите, а как подсчитать действительную длину длинной строки? Т.е., к примеру, я объявил длину строки 512 символов, но реальная длина - 400..420 символов. Но как узнать, реальную точную длину?
Функция LEN() работает до 255 символов.
Функция SIZEOF() показывает длину строки при инициализации.
Неужели только в цикле искать первый символ с кодом 0 (как в примере выше)?
Вот:
60682
Евгений Кислов
16.05.2022, 13:45
Привет.
Подскажите, а как подсчитать действительную длину длинной строки? Т.е., к примеру, я объявил длину строки 512 символов, но реальная длина - 400..420 символов. Но как узнать, что реальную точную длину?
Функция LEN() работает до 255 символов.
Функция SIZEOF() показывает длину строки при инициализации.
Неужели только в цикле искать первый символ с кодом 0 (как в примере выше)?
Вот:
60682
Для работы с длинными строками используется библиотека StringUtils.
В ней есть функции StrLenA (для STRING) и StrLenW (для WSTRING).
Обратите внимание - вы задали вопрос не в том разделе (ПЛК1хх программируются в CoDeSys V2.3, а не V3.5).
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot