Строки
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Строковые типы данных имеются практически во всех языках программирования. Оно и понятно. Почти все программы выводят на экран хоть какой-то текст. В принципе, для этого можно использовать массив символов. Но это не всегда удобно.
Поэтому в Паскале с давних времён имеется тип string, который позволяет работать с целыми строками, а не с отдельными символами. По сути это тот же массив символов, однако работать с типом string удобнее, чем с массивами.
Строковая переменная объявляется обычным способом:
var Str255 : string; //Строка без размера (но не более 255 символов)
Дальше с этой переменной можно работать. Например, так:
Str255 := ‘Привет, МИР’;
Можно объявлять строки ограниченной длины:
Str8 : string[8]; //Строка длиной 8 символов
Как я уже говорил, строка - это по сути массив символов. Поэтому можно работать с отдельным элементом строки, то есть с одним символом. Например, так:
Str255 := ‘Привет, МИР’;
Str255[11] := ‘Ф’;
После такой манипуляции в переменной Str255 будет строка ‘Привет, МИФ’.
Строки можно складывать. Эта операция называется конкатенация. Например, так:
Str255 := 'Привет, МИР'; Str8 := '!!!'; Str255 := Str255 + Str8; WriteLn(Str255); //Будет выведено Привет, МИР!!!
И вообще со строками много чего можно делать с помощью стандартных подпрограмм, которые есть в любом языке программирования.
В классическом Паскале строка типа String ограничена 255 символами. Поэтому для случаев, когда требуются строки большей длины, в последующих версиях Паскаля придумали тип ANSIString, который не имеет ограничений по длине.
Исходя из этого логично предположить, что программа
var i : integer; Str255 : string; StrANSI : ANSIString; //Строка неограниченной длины begin StrANSI := ''; for i := 1 to 320 do StrANSI := StrANSI + '*'; WriteLn(StrANSI); Str255 := ''; for i := 1 to 320 do Str255 := Str255 + '+'; WriteLn(Str255); end.
либо вызовет ошибку времени компиляции (выполнения), либо при выводе значения переменной Str255 выведет не 320 символов, а 255. Возможно, в Турбо Паскале бы так и было (как было, я уже не помню). Однако в Free Pascal в обоих случаях будет выведено одинаковое количество символов, то есть 320 (с настройками по умолчанию).
Происходит так потому, что Free Pascal в случае, когда фактический размер строки типа string превышает 255 символов, автоматически преобразует её в ANSIString.
Тем не менее следует избегать ситуаций, когда в переменную типа String записывается более 255 символов. Потому что это может плохо сказаться на переносимости кода и может привести к ошибкам, если вы измените настройки компилятора.
Для примера найдите в начале программы директиву
{$H+}
и замените её на
{$H-}
Затем откомпилируйте программу и вы увидите, что при выводе переменной Str255 на экране отобразятся только первые 255 символов.
Существуют и другие строковые типы данных. Но они используются редко, поэтому упоминать о них не будем. Если кому интересно - см. документацию на среду разработки и компилятор.