Строки

Что делать, чтобы стать программистом Что делать, чтобы стать программистом

Многие сегодня хотят стать программистами. Хотят. Но ничего не делают для этого. Не делают даже простых вещей. Не хотят даже прочитать книжку из 10 страниц. В итоге так и остаются никем. Потому что мечты не сбываются никогда. Сбываются только планы… Подробнее...

Строковые типы данных имеются практически во всех языках программирования. Оно и понятно. Почти все программы выводят на экран хоть какой-то текст. В принципе, для этого можно использовать массив символов. Но это не всегда удобно.

Поэтому в Паскале с давних времён имеется тип 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

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