Строки

Lazarus IDE: Основы программирования в Windows 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 символов.

Существуют и другие строковые типы данных. Но они используются редко, поэтому упоминать о них не будем. Если кому интересно - см. документацию на среду разработки и компилятор.


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика