ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.07.2019
Просмотров: 765
Скачиваний: 9
Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов.
Поскольку тип TDateTime совместим с форматом вещественных чисел, можно без труда определить дату, отстоящую от заданной на сколько-то дней вперед или назад: для этого достаточно соответственно прибавить к заданной дате или отнять от нее нужное целое число.
4.17. Логические типы данных Boolean.
В Турбо Паскале логический тип данных носит название BOOLEAN. Значением логического типа может быть одна из двух констант FALSE (ложь) или TRUE (истина). Для них справедливы правила:
Ord(false)=0
Ord(true)=1
False<true
Succ(false)=true
Pred(true)=false
Название логического типа данных |
Значению False соответствует |
Значению True соответствует |
Размер памяти для логического типа данных |
Boolean |
Число 0 |
1 |
1 байт |
ByteBool |
Число 0 |
Любое число, отличное от 0 |
1 байт |
WordBool |
Число 0 в обоих байтах |
2 байта |
|
LongBool |
Число 0 во всех байтах |
4 байта |
Логические переменные должны быть описаны предложением:
Var <имя_переменной>: boolean;
4.18. Символьные типы: AnsiChar = Char, WideChar.
Символьный
тип данных Char —
тип данных, значениями которого являются
одиночные символы. Данный тип может
содержать всего один любой символ
(Например: «*», «/», «.», «!» и другие).
Каждый такой символ занимает 8 бит
памяти, всего существует 256 восьмибитовых
символов. Все символы, используемые
символьным типом Char записаны в таблице
символов ASCII (American Standart Code for Information
Interchange) или Американский стандарт кода
для обмена информацией.
Символьные
константы заключаются в апострофы,
например '.', '*', '7', 's'. Также символьную
константу можно записать с помощью
символа — «решетки», например #185 —
выведет символ под номером 185 из таблицы
ASCII (это символ '№').
Таблица 1. Характеристики символьных типов |
||
Название типа |
Идентификатор |
Размер в байтах |
Символ кода ANSI |
AnsiChar |
1 байт |
Символ кода Unicode |
WideChar |
2 байта |
Родовой символьный тип |
Char |
1 байт |
Типы AnsiChar и WideChar имеют постоянное представление в памяти, которое не будет изменяться в различных реализациях Object Pascal. Родовой символьный тип Char в данной реализации соответствует типу AnsiChar. Заметим, что первые 256 символов кода Unicode совпадают с кодом ANSI.
4.19. Строковые типы для длинных строк: AnsiString = String, WideString.
Строки AnsiString, называемые также длинными строками (long string), наиболее предпочтительны для большинства применений. Строковые типы могут смешиваться в операторах присваивания и выражениях. При этом компилятор автоматически выполняет требуемые преобразования. Однако при передаче в качестве var и outпараметров подпрограмм они должны иметь соответствующий тип. Длинные строки AnsiString являются динамически размещаемыми строками, максимальная длина которых ограничена только имеющейся памятью. Так как переменные AnsiString являются указателями, то на одну строку может ссылаться более одного указателя, что учитывается компилятором для экономии памяти. Когда переменная уничтожается или ей присваивается новое значение, то число указателей на старую строку уменьшается на 1 (reference-counting). Когда оно становится равным нулю, память автоматически освобождается.
Тип |
Число символов |
Объем занимаемой памяти |
Назначение |
ShortString |
255 |
от 2 до 256 байт |
для обратной совместимости |
AnsiString |
около 231 |
от 4 байт до 2ГБ |
8-битовые символы ANSI |
WideString |
около 230 |
от 4 байт до 2ГБ |
символы Unicode; параметры методов интерфейсов в СОМ технологиях |
4.20. Строковые типы для коротких строк: ShortString, String[N].
Короткие строки ShortString. Предназначены только для обратной совместимости, отчасти потому, что занимают в памяти всегда 256 байт независимо от фактического числа символов (если строка описана без задания максимального числа символов). Функция High возвращает максимальный размер строки, а Low – нуль.
4.21. Совместимость типов при присвоениях.
Одним из требований в языке программирования Pascal является следующее: в выражениях (в том числе при сравнении) должны использоваться операнды с совместимыми типами. Типы совместимы, если выполняется хотя бы одно из условий.
-
Оба типа эквивалентны.
-
Оба типа целые.
-
Оба типа вещественные.
-
Один из типов имеет интервальный тип, а другой тип является для него базовым:
type
tp1 = integer;
tp2 = -1..1000;
-
Оба типа являются диапазонами одного и того же базового типа
-
Один тип строковый, а второй — либо строковый, либо символьный, либо упакованный символьный массив.
-
Оба типа — упакованные символьные массивы с одинаковым числом элементов.
-
Оба типа являются множествами с совместимыми базовыми типами
-
Один тип является ссылочным, а второй — либо ссылочный, либо бестиповый указатель.
-
Оба типа — это процедурные типы с одним и тем же числом параметров, причем типы параметров должны быть эквивалентными (в соответствии с их порядком следования), а для функциональных типов также должны быть эквивалентными типы результатов.
4.22. Тип Variant и его использование.
Компилятором FPC поддерживается тип variant. Для того чтобы включить поддержку вариантного типа, необходимо упомянуть в предложении uses модуль variants во всех модулях, в которых используется тип variant. Более того, компилятор должен быть в режимах Delphi или Objfpc.
Предназначен для использования в том случае, когда на этапе компиляции тип данных не известен, или может уточняться при выполнении программы. Введен для поддержки технологии OLE (Object Linking and Embedding – Связывание и внедрение объектов). Занимает в памяти дополнительно 2 байта для информации о фактическом типе данных. Эта информация позволяет компилятору создать код, осуществляющий при исполнении программы необходимые преобразования данных. С переменной типа Variant совместимы (могут быть в нее помещены) типы:
-
целые или вещественные (кроме Int64),
-
логические,
-
строки,
-
время и/или дата,
-
OLE-объект (объект, переносимый системой из других приложений через буфер),
-
массив произвольной размерности и длины, содержащий элементы перечисленных типов.