Строковые типы

    В выражениях Delphi поддерживает три физических строковых формата: короткий (ShortString), длинный (LongString) и широкий (WideString). Их можно комбинировать в операторах присваивания и выражениях (все необходимые преобразования Delphi выполняет автоматически).
    Переменные типов AnsiString и WideString — это динамически распределяемые массивы символов, максимальная длина которых ограничивается только наличием памяти. Разница между ними состоит в том, что в AnsiString знаки записываются в формате char, а в WideString— в формате WideChar. Обычно вполне достаточно одного типа AnsiString, однако при работе с международными наборами символов, такими как UNICODE, удобнее использовать WideString.
    Тип ShortString—это, по существу, массив Array [0..255] of char. Первый его элемент задает динамическую длину строки, которая может принимать значения от 0 до 255 символов. Символы, составляющие строку, занимают места от 1 до 255. Тип ShortString предназначен, в основном, для обеспечения совместимости с ранними версиями Delphi и Borland Pascal.
    Логический строковый тип именуется просто String. Отнесение его к типу AnsiString или ShortString задается командой $Н. По умолчанию задается { $Н+}, и String совпадает с AnsiString. Если задать команду {$Н- }, то String будет совпадать с ShortString и иметь максимальную длину, равную 255 символам.
    Для совместимости с другими языками программирования в Delphi поддерживается класс строк с конечным нулем. Зарезервированных слов или идентификаторов для этого класса не существует.
    Строки с конечным нулем состоят из ненулевых символов и оканчиваются символом с порядковым номером 0 (#0). В отличие от типов AnsiString, ShortString и WideString, строки с нулевым окончанием не имеют указателя длины. Конец в этих стооках обозначается нулем.
    Физически строки с нуль-окончанием подобны массивам символов с нумерацией элементов от нуля, наподобие array [ 0 . . X] of char, где Х — некоторое положительное целое, большее нуля, хотя никаких объявлении подобного рода не происходит. Вместо этого определяется переменная-указатель PChar и распределяется необходимый объем памяти. При необходимости строке AnsiString можно присвоить тип PChar.

Функция 

Описание

Concat(sl, s2, s3)

Возвращает последовательное соединение строк. Эквивалентна оператору sl+s2+s3

Copy(s, pos, len)

Возвращает подстроку длиной максимум len символов, начинающуюся в позиции pos строки s

Delete(s, pos, len)

Удаляет максимум len символов из строки s, начиная с позиции pos

 Insert(sourse, tar-get, pos)

Вставляет строку source в строковую переменную target, начиная с позиции pos

Length (s)

Возвращает динамическую длину строки. Подобна функциям LEN в Basic и strlen — в C/C++

Pos(substring, s)

Возвращает место первого вхождения подстроки substring в строку s. Подобна функциям SUBSTR в Basic и strstr () — в C/C++

SetLength(s, newlen)

Задает новую динамическую длину newlen строковой переменной s

SetString

Задает содержимое и длину строки

Str(x, s)

Преобразует численное значение х в строковую переменную s

StringOfChars 

Возвращает строку с конкретным числом символов

UniqueString

Делает данную строку уникальной со счетом обращений 1

Val (s, v, code)

Преобразует строку s в соответствующее численное представление v

Указательные типы

    Переменная указательного типа содержит значение, указывающее на переменную обычного типа — адрес этой переменной (табл. 1.8).

    pointer   // Указатель без типа.
    ^typel    // Указатель с типом.

    Если исходный тип (тип переменной, на которую должен ссылаться указатель) еще не объявлен, его надо объявить в том же разделе объявления типов, что и тип указателя.
    Только исходный тип указателей может совпадать с собственно типом.

Средство

Описание

New 

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

Оператор @ 

Направляет переменную-указатель на область памяти, содержащую любую существующую переменную, процедуру или функцию, включая переменные, имеющие идентификаторы

GetMem

Создает новую динамическую переменную заданного объема и записывает ее адрес в переменную указательного типа

 
Указатели и адресные функции
    Информация, содержащаяся в переменной указательного типа, — это адрес некоторого участка в машинной памяти. Эти значения задаются во время работы программы и могут меняться от одного запуска к другому. Следующие функции обеспечивают доступ к адресной информации в программе и тестирование переменных-указателей.   

Функция

Описание

Addr 

Возвращает адрес указанного объекта

Assigned

Проверяет, равно ли значение процедурной функции Nil

Ptr

Преобразует адрес в указатель

 

    Зарезервированное слово Nil указывает значение указателя, который ни на что не указывает. Такие указатели называют неопределенными. В Object Pascal только при определении указателей можно нарушать правило, по которому все указываемые идентификаторы, в том числе идентификаторы типов, должны быть объявлены выше. Здесь можно указать идентификатор еще необъявленного типа, как в следующем примере:

    type
        PointerType = ^NotYetDefinedType;

    Однако необъявленный тип необходимо объявить ниже в том же блоке объявления типов.
    Определенный в Object Pascal тип Pointer— это указатель без типа. Обратиться к переменной через такой указатель невозможно (к переменной типа Pointer нельзя дописывать символ "^"). Однако можно задать ей другой указательный тип.
    По значениям переменных тип Pointer совместим с остальными указательными типами.

Сайт создан в системе uCoz