ГОСТ Р МЭК 61131-3—2016
Явная максимальная длина определяется максимальной длиной (которая не должна превышать
поддерживаемое максимальное значение, определенное разработчиком), приведенной в скобках в со
ответствующем объявлении данных.
Доступ к отдельным символам строки в элементах данных CHAR или WCHAR осуществляется
указанием в квадратных скобках позиции символа в строке, начиная с позиции 1.
Ошибка возникает, если к строкам двухбайтовых символов осуществляется доступ с использо
ванием однобайтовых символов или если к строкам однобайтовых символов осуществляется доступ с
использование двухбайтовых символов.
Пример 1 — Типы STRING. WSTRING и CHAR. WCHAR
a) Объявление
VAR
Stringl: STRING[10]:= ’ABCD’;
String2: STRING[10]:=
aWStrings: ARRAY[0..1] OF WSTRING:= ["1234”, "5678”];
Chari: CHAR:
WCharl: WCHAR;
END_VAR
b) Использование типов STRING и CHAR
Chari:= Stringl[2];//эквивалентно C hari:- ’B ’;
Stringl[3]:= Chari; / / приводит к Stringl:= ’ABBD’
Stringl[4]:- ’В’; // приводит к S trin g l^ ’ABBB’
Stringl[1]:- Stringl[4]; / / приводит к Stringl:= ’BBSS’
String2:= String1[2]; (‘ приводит к Stringl:= ’BBSS’
если было выполнено неявное преобразование CHAR_TO_STRING")
c) Использование типов WSTRING и WCHAR
WCharl;= aWStrings[1][2]; / / эквивалентно WCharl:- ‘В ’;
aWStrings[1][3]:=WChar1; // приводит к aWStrings[1]:= «5668»
aWStrings[1][4]:= «6л>; // приводит к aWStrings[1]:= “5666”
WStrings[1][1]:= aWStrings[1][4); И приводит к Stringl:= "6666”
aWStrings(0]:= aWStrings[1][4]; (‘ приводит aWStrings[0]:= "6”;
если было выполнено неявное преобразование WCHAR_TO_WSTRINGh)
d) Эквивалентные функции (см. 6.6.2.5.11)
Chari;= Stringl[2];
эквивалентно
Char1:= STRING_TO_CHAR(Mid(IN:= Stringl, L:= 1. P:= 2));
aWStrings[1][3]:= WCharl;
эквивалентно
REPLACE(IN1:= aWStrings[1], IN2:= WCharl. L:= 1. P:=3 );
e) Случаи ошибки
Chari:= Stringl[2];//смешивание типов WCHAR,
STRING String 1[2]:= String2;
// требует неявного преобразования STRING_TO_CHAR. которое не разрешено
П р и м е ч а н и е — Типы данных для отдельных символов (CHAR и WCHAR) могут содержать
только один символ. Строки могут содержать несколько символов; поэтому строки могут содержать
дополнительную информацию для управления, которая не нужна для отдельных символов.
Пример 2 — Если тип STR10 объявлен как
TYPE STR10: STRING[10]:= ABCDEF’; END_TYPE.
то максимальная длина STR10 равна 10 символам, начальное значение по умолчанию равно
’ABCDEF’, и начальная длина элементов данных типа STR10 равна шести символам.
21