Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория 9.doc
Скачиваний:
5
Добавлен:
05.05.2019
Размер:
349.7 Кб
Скачать

Структуры данных в Delphi

2.1. Стандартные типы данных

2.1.1. Числовые типы

Некоторые типы данных, стандартные для языка Pascal, немного изме­нились в сторону расширения диапазона возможных значений и, соот­ветственно, увеличения занимаемого места. Это связано с тем, что со­здаваемые в Delphi приложения ориентированы на работу в операционной системе Windows, а не DOS, что накладывает на них некоторые требова­ния. Программы, выполняемые в Windows, широко используют систем­ные функции операционной системы, передавая им множество парамет­ров. Таким образом, представление информации в Delphi должно соответствовать представлению аналогичной информации в Windows.

Рассмотрим сравнительные таблицы типов данных в Pascal и Delphi (см. табл. 2.1 и 2.2), в которых указаны сведения о типах данных в Pascal и Delphi. В нижних частях таблиц приводятся сведения о новых типах дан­ных, которых не было в языке Pascal.

Из сравнительных таблиц видно, что среди целочисленных типов дан­ных не произошло существенных изменений, за исключением увеличе­ния диапазона типа Integer. Это связано с частым использованием дан­ного типа при передаче параметров системным функциям Windows. Также добавлены новые Типы Cardinal, Int64 и Longword для более удобной организации структур данных в программе.

Новый целочисленный тип данных Smallint соответствует типу Integer языка Pascal и добавлен в Delphi для упрощения переноса фрагментов текста из старых программ, работающих в операционной системе DOS, которые используют переменные типа Integer и чувствительны к воз­можному изменению размеров этих переменных. При переносе таких фрагментов ссылки на тип Integer следует заменять на Smallint.

Среди вещественных типов данных изменены возможности типов Real, Extended и Comp, а также, для совместимости с программами, написан­ными на Turbo Pascal, добавлен новый тип Real48, совпадающий с ти­пом Real языка Pascal.

Особого внимания заслуживает новый вещественный тип данных Currency, предназначенный для использования в финансовых вычислениях и при­званный исключить ошибки искажения значений, присущие переменным с плавающей точкой. Переменные типа Currency на самом деле хранятся не как вещественные переменные, а как целочисленные переменные типа Int64, а при использовании их в выражениях автоматически делятся на 10000. Таким образом, значения переменных типа Currency являются числами не с плавающей точкой, а с фиксированной.

Сравнительная таблица целочисленных типов данных в Pascal и Delphi

Таблица 2.1

2.1.2. Строковые типы данных

В языке программирования Pascal для работы со строками был предус­мотрен тип String, представляющий собой последовательность (массив) символов, размером до 255-ти байт, в начале которой находилось одно­байтовое число, содержащее длину строки. С другой стороны, в языке С, на который, в основном, ориентируется среда Windows, строки хра­нятся в так называемом ASCIIZ-формате.

Каждая строка в формате ASCIIZ представляет собой указатель на мас­сив символов, который заканчивается нулевым символом. Такое представ­ление строки имеет свои преимущества — например, практически нео­граниченная длина ASCIIZ-строк, и свои недостатки — связанные с неудобством использования указателей (ссылочных переменных).

В Delphi предлагается компромисс между двумя подходами к хранению строк. Внутреннее представление строки реализовано динамически, в ASCIIZ-формате, тогда как с точки зрения программиста строка являет­ся массивом символов известной длины (символы в массиве пронумеро­ваны от единицы). В связи с этим отменена возможность доступа к ну­левому элементу строки с целью получения ее длины. Длину строки в Delphi можно определить с помощью функции Length:

Length(<Строка>): Integer;

Установить длину строки можно с помощью процедуры SetLength: SetLength(<Строка>, <Новая длина>);

Еще одной особенностью работы в среде Windows является возможность использования кодировки символов Unicode, в которой каждый символ представляется не одним, а двумя байтами. Кодировка Unicode предназ­начена для индексации символов нескольких алфавитов одновременно. Строковые типы данных, доступные в Delphi, описаны в табл. 2.3.

Тип ShortString введен для обратной совместимости с Pascal под DOS и не рекомендуется для использования. Переменной, описанной с ис­пользованием устаревшего типа String, назначается тип ShortString, если при компиляции директива н находится в выключенном состоянии: {$н-}, или Ansistring, если при компиляции директива н находится во включенном состоянии: {$Н+}.

Для больи;;::-: Unicode) д.:я вать тип я.-5:

Строковые типы данных в Delphi

Таблица 2.3

Название типа

Максимальная длина, символов

Занимаемая память

Размер символа, байт

ShortString

255

От 2 до 256 байт

1

AnsiString

От 4 байт до 2 Гб

1

WideString

От 4 байт до 2 Гб

2

Для большинства случаев (не связанных с использованием кодировки Unicode) для описания строковых переменных рекомендуется использо­вать ТИП AnsiString.

2.1.3. Другие стандартные типы данных

Работа с другими типами данных, предусмотренными в Delphi, не отли­чается от использования аналогичных типов данных в Pascal.

Например, вместо одного логического типа данных в Pascal, в Delphi существует целых четыре: Boolean, ByteBool, WordBool и LongBool. Такое разнообразие типов предусмотрено для обеспечения совместимости с другими языками программирования и средами выполнения. Как видно из их названий, они отличаются друг от друга только размером, и без особой необходимости нет смысла в использовании для описания логи­ческих переменных какого-либо другого типа вместо обычного Boolean.