Добрый день, уважаемые форумчане! Подскажите как реализовать объединение двух строк в 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 (как в примере выше)?
Вот:
Вложение 60682