Строки с нулем в конце (null-terminated strings) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Строки с нулем в конце (null-terminated strings)



Структура строки в Паскале (в той версии языка, которая была реализована ком-

панией Borland еще для системы MS-DOS, когда операционной системы Windows

не существовало) отличается от структуры строки, которая обрабатывается сис-

темными вызовами Windows. Эта структура характеризуется тем, что отсчет сим-

волов в строке начинается с нуля, а завершается строка символом с кодом 0 (#0).

Тип строки с нулем в конце в зависимости от типа составляющих ее символов назы-

вается РСhаг или PWideChar,

Л ПОДСКАЗКА В Паскале в большинстве случаев разрешается смешивать эти типы,

но при программировании рекомендуется придерживаться, в

основном, типа String, а к типу РСпаг прибегать только, когда без

этого не обойтись.

Строки фиксированной длины

По умолчанию строка типа String может иметь размер до 2 Гбайт, а оперативная

память для нее выделяется программой автоматически, в зависимости от текущей

длины строки. В некоторых случаях бывает полезно ограничить длину строки неболь-

шим фиксированным значением. Чаще всего это требуется при работе с файлами,

которые содержат текстовую информацию в заранее известном формате.

Для явного указания длины после ключевого слова string в квадратных скобках

задается число, определяющее эту длину.

string[50]

Для такой строки на этапе компиляции будет выделена область памяти в 50 симво-

лов. Строку большей длины (например, 51 символ) записать в нее нельзя (меньшей -

можно, но объем зарезервированной для строки памяти останется неизменным).

Строковые выражения

Для строк операция — сложение или сцепление, обознача-

емая символом ≪+≫. Результатом является строка, полученная сцеплением левого

и правого операндов.

Выражение '* это' + ' строка' +'!' имеет значение '* это строка!'

Операции отношения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Пример:

Выражение Результат
‘True1’<’True2’ True
‘Mother’>’MOTHER’ True
‘Мама ‘ <> ‘Мама’ True
‘Cat’=’Cat’ True

Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition — целочисленные выражения.

Пример:

Значение S Выражение Результат
‘Мама мыла раму’ Copy(S, 6, 4) ‘мыла’
‘Маша ела кашу’ Copy(S, 1, 8) ‘Маша ела’

Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку.

Пример:

Выражение Результат
Concat('Маша ', 'ела ', 'кашу') 'Маша ела кашу'

Функция Length(S) — определяет текущую длину строки S. Результат — значение целого типа.

Пример:

Значение S Выражение Результат
'test-5' Length(S)  
'(A+B)*C' Length(S)  

Функция Pos(S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.

Пример:

Значение S2 Выражение Результат
'abcdef' Pos('cd', S2)  
'abcdcdef' Pos('cd', S2)  
'abcdef' Pos('k', S2)  

Процедура Delete(S, Poz, N) — удаление N символов из строки S, начиная с позиции Poz.

Пример:

Исходное значение S Оператор Конечное значение S
'abcdefg' Delete(S, 3, 2) 'abefg'
'abcdefg' Delete(S, 2, 6) 'a'

В результате выполнения процедуры уменьшается текущая длина строки в переменной S.

Процедура Insert(S1, S2, Poz) — вставка строки S1 в строку S2, начиная с позиции Poz.

Пример:

Исходное значение S2 Оператор Конечное значение S2
'ЭВМ РС' Insert('IBM-', S2, 5) 'ЭВМ IBM-PC'
'Рис. 2' Insert('N', S2, 6) 'Рис. N 2'

ShortString, String[15]

Length(S) = Ord(S[0])

S:= 'ABC'; //S[1]='A'

PChar @ ^Char (ASCIIZ)

CP:= 'ABC'; //CP^='A', CP[0]='A', CP+1='BC', CP+3='', CP[3]=#0

String (HugeString)



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 224; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.91.54.203 (0.004 с.)