Строковый тип
Строки имеют тип string
, состоят из набора последовательно расположенных символов
char
и используются для представления текста.
Строки могут иметь произвольную длину. К символам в строке можно обращаться, используя индекс:
s[i]
обозначает i
-тый
символ в строке, нумерация начинается с единицы. Если индекс i
выходит за пределы
длины строки, то генерируется исключение.
Над строками определены операции сравнения: < > <= >= = <>. Сравнение строк на неравенство осуществляется лексикографически: s1 < s2 если для первого несовпадающего символа с номером i s1[i]<s2[i] или все символы строк совпадают, но s1 короче s2.
Операция +
для строк означает
конкатенацию (слияние) строк. Например: 'Петя'+'Маша'
= 'ПетяМаша'
.
Расширенный оператор присваивания +=
для строк
добавляет в конец строки - левого операнда строку - правый операнд. Например:
var s: string := 'Петя';
s += 'Маша'; // s = 'ПетяМаша'
Строка может складываться с числом, при этом число предварительно преобразуется к строковому представлению:
s := 'Ширина: '+15; // s = 'Ширина: 15'
s :=
20.5+''; // s = '20.5'
s += 1; // s = '20.51'
Над строками и целыми определена операция *: s*n и n*s означает строку, образованную из строки s, повторенной n раз:
s := '*'*10; // s = '**********'
s := 5*'ab' // s = 'ababababab'
s := 'd'; s *= 3; // s =
'ddd'
Строки реализуются типом System.String
платформы .NET и представляют собой ссылочный тип.
Таким образом, все операции над строками унаследованы от типа
System.String
. Однако, в отличие от .NET -
строк, строки в PascalABC.NET изменяемы.
Например, можно изменить s[i]
(в .NET
нельзя). Более того, строки string
в PascalABC.NET ведут себя как
размерные: после
var s2 := 'Hello';
var s1 := s2;
s1[2] := 'a';
строка s2
не изменится.
Аналогично при передаче строки по значению в подпрограмму создается копия
строки, т.е. обеспечивается поведение, характерное для Delphi Object
Pascal, а не для .NET.
Однако, строке можно присвоить nil
,
что необходимо для работы с NET-кодом.
Кроме того, в PascalABC.NET
реализованы размерные строки. Для их описания используется тип
string[n]
, где n
-
константа целого типа, указывающая длину строки. Размерные строки, в отличие от обычных, можно использовать как
компоненты типизированных файлов. Для совместимости с
Delphi Object Pascal в стандартном модуле описан тип
shortstring=string[255]
.