Строки в Pascal

В Pascal  строкой называется массив из Литерных символов, где 0-ое значение занято размером строки.

Общее.

При объявлении строки можно задать её размер. Максимальный размер строки 255 символов. По умолчанию, если размер строки не указан явно, в Borland Pascal и Turbo Pascal размер строки будет равен 255 символов, в UCSD Pascal – 80. В  FreePascal и Delphi не ограниченная переменная string имеет на самом деле имеет тип AnsiString который может занимать максимальный размер в памяти до 2 Гб это 2147483646 символов.

В Object Pascal строковая переменная так же имеет ограничение в 2 Гб.

 

Объявление строки.

Что бы объявить строку, в блоке var надо указать тип string и возможно указать кол-во элементов, по следующему шаблону:

<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string;

или

<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string[<кол-во символов в строке>];

Пример объявления строковой переменной:

Можно так же объявить строку, через объявления пользовательского типа.

Шаблон такого способа будет выглядеть так:

type

<имя пользовательского типа> = string [максимальная длина строки];

var

<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>: <имя пользовательского типа>;

Пример:

 

Процедуры предназначенные для работы над строками:

Delete

Procedure Delete(Var Str: String; Poz: Integer; Count: Integer); — Из строки Str удаляет Count символов, начиная с позиции Poz.

Пример:

В результатае строка Str будет иметь значение ‘12789’ соответственно 4 символа начиная с третьего были удалены ‘3456’.

 

Insert

Procedure Insert(S: String; Var Str: String; Poz: Integer); — Вставляет строку S в строку Str, начиная с позиции Poz.

Пример:

В результатае строка Str будет иметь значение ‘120003456789’ соответственно была вставлена подстрока ‘000’ начиная с третьего символа.

 

Str

Procedure Str(IR:[Integer;Real] ; var Str: String); — Преобразует числовое значение IR в строку, и помещает его в строку Str.

Пример:

В результате строка S будет иметь значение ‘123’.

 

Val

Procedure Val(Str: String; var IR:[integer, real]; var Error: Integer); — Преобразует значение Str в целочисленный или вещественный тип и помещает результат в переменную IR. В переменную error будет помещаться позиция первого символа, на котором произошла ошибка.

Пример:

В результате переменная i будет содержать число 123, а переменная Error число 4 .

 

Функции предназначенные для работы со строками:

Copy

Function Copy(Str: String; Poz: Integer; Count: Integer): String; — функция Сopy возвращает строку содержащую Count  символов, начиная с Poz.

Пример:

В результате в переменной SCopy будет строка ‘2345’ .

 

Concat и +

Function Concat(Str1[,Str2,…,StrN]: String): String; — Результатом функции будет строка, являющаяся объединением строк Str1[,Str2,…,StrN]. Если в результате получится строка больше 255 символов, то строка обрежеться до 255 -ого символа.

Пример:

В результате в строке S будет значение ‘123456789’.

Такой же результат можно добиться используя оператор + (сложения):

 

Length

Function Length(Str: String) : Integer; — результатом данной функции будет текущая длина строки.

Пример:

В результате в переменной I будет содержаться число 9, что соответствует длине строки ‘123456789’.

 

Pos

Function Pos(S: String; Str: String): Byte; — Функция Pos возвращает позицию первого вхождения строки S в строку Str. Если строки S нет в строке Str, то возвращается 0.

Пример:

В результате в переменной i будет содержаться число 4, что соответствует началу первого вхождени подстроки ‘456’ в строку ‘123456789’.

 

Так же к строкам можно применить логические операции:

‘=’ — операция равно. Если две строки равны результат будет TRUE, в противном случае FALSE.

<> — операция не равно. Если строки равны результат будет FALSE, в противном случае TRUE.

<,>- операции больше или меньше. Сравнивает две  строки по алфавиту. так например ‘a'<‘bc’ и ‘ab'<‘c’ и ‘A'<‘a’.

 

Комментарии:

Комментарии 5

  • Хорошой сайт, хорошой

  • тут ошибка в слове алфавит!!!!!!!

  • можно ли сделать через строки сложение длинных целых чисел

    • сделать можно … но мне кажется инструмент не тот.. или я вас не так понял.
      В классическом паскале строки 255 символов. Конечно в современных реинкарнациях максимальное количество символов должен быть больше. Но всё равно это как то не рационально. Предлагаю числа хранить в файлах.
      Брать посимвольно, складывать сохранять в конец 3 файла. и в памяти надо хранить 1 или 0.
      В итоге в случае прирывания процесса… чисто теоретически мы можем начать с места на котором остановились.

      Если же числа не настолько большие… то в принципе в современных компиляторах есть всякие типы double. которые вполне справляются со сложением больших чисел. (вопрос точности 🙂

      Например Powershell:

      результат:
      8,88888888888889E+253

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *