Добрый день, уважаемые форумчане! Подскажите как реализовать объединение двух строк в 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 символов Предел там 2М где-то.Ну так объявление STRING(..) - это указание на предельный размер
Привет.
Подскажите, а как подсчитать действительную длину длинной строки? Т.е., к примеру, я объявил длину строки 512 символов, но реальная длина - 400..420 символов. Но как узнать, реальную точную длину?
Функция LEN() работает до 255 символов.
Функция SIZEOF() показывает длину строки при инициализации.
Неужели только в цикле искать первый символ с кодом 0 (как в примере выше)?
Вот:
foto004.png
Последний раз редактировалось ВладОвен; 16.05.2022 в 14:08.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk