Типы данных в Delphi можно разделить на предопределенные в языке (встроенные) типы и типы, определяемые пользователем. К предопределенным относятся типы целые, действительные, символы, строки, указатели, булевы, variant.
Определяемые пользователем типы могут быть использованы или непосредственно в объявлении переменной, или должны быть объявлены с помощью ключевого слова Type Это слово начинает раздел объявления типов. После него может следовать ряд объявлений типов в форме:
<идентификатор типа> = <описание типа>;
Например:
...
Type
TColor = (red, blue, green); //Создание типа данных TColor
var
Color:TColor; //Объявление переменной Color, типа TColor
...
begin
Color:=red; //Присваивание переменной Color допустимого значения red.
end;
В данном примере, переменные типа TColor, могут принимать всего 3 значения: red, blue или green.
Создание пользовательских типов я постараюсь описать более подробно в другой статье. Остановимся более подробно на предопределенных типах данных. Итак:
Целые типы данных в Delphi
Целые типы данных используются для представления целых чисел. Ниже приведена таблица, в которой перечисляются эти типы для Delphi 2010 и даются диапазоны их изменений.
Тип данных |
Диапазон значений |
Занимаемая память (байт) |
Может ли хранить отрицательные значения |
Алиасы (псевдонимы) |
Byte |
от 0 до 255 |
1 |
нет |
|
Word |
от 0 до 65535 |
2 |
нет |
|
Cardinal |
от 0 до 4294967295 |
4 |
нет |
LongWord |
ShortInt |
от -128 до 127 |
1 |
да |
Int8 |
SmallInt |
от -32768 до 32767 |
2 |
да |
Int16 |
Integer |
от -2147483648 до 2147483647 |
4 |
да |
LongInt, Int32 |
Int64 |
от -9223372036854775808 до 9223372036854775807 |
8 |
да |
|
Действительные типы данных в Delphi
Их ещё иногда называют вещественными типами (типы с плавающей запятой или точкой).
Действительные типы данных предназначены для хранения чисел, имеющих дробную часть. Ниже приведена таблица, в которой перечисляются эти типы для Delphi 2010 и даются диапазоны их изменений.
Тип данных |
Диапазон значений |
Занимаемая память (байт) |
Число значащих разрядов |
Алиасы (псевдонимы) |
Single |
от ±1.5·10-324 до ±3.4·10+308 |
7-8 |
4 |
|
Double |
от ±5.0·10-45 до ±1.7·10+38 |
15-16 |
8 |
Real, Real48 |
Extended |
от ±3.6·10-4932 до ±1.1·10+4392 |
19-20 |
10 |
|
Comp |
от -2·1063 до +2·1062 |
19-20 |
8 |
|
Currency |
от -922337203685477.5808
до +922337203685477.5807 |
19-20 |
8 |
|
Тип, обеспечивающий максимальную производительность - это Double.
Тип Extended - обладает самой высокой точностью, но работает медленне всех и потребляет много памяти. Кроме того, при использовании типа Extended могут возникать проблемы с переносимостью на другие платформы.
Типы данных Comp и Currency предназначен для представления чисел с фиксированной точкой. Они введены для выполнения точных финасовых рассчетов.
Тип Comp является скорее целым типом, нежели вещественным. Он оставлен в целях совместимости, т.к. его диапазон значений полностью перекрывается типом Int64.
Currency в болшей степени используется для представления денежных велечин. В памяти
он хранится как масштабированное в 10000 раз 8-байтовое целое.
Приведенные в таблицах затраты памяти могут изменяться от версии к версии и от системы к системе. Поэтому, если требуется достоверно знать затраты памяти для того или иного типа, следует пользоваться функцией SizeOf.
Например:
var
a:int64;
b:double;
size:byte;
size2:byte;
begin
size:=SizeOf(a);
size2:=SizeOf(b);
end;
После выполнения этого кода переменные size и size2 примут значение 8, т.к. каждая из них (Типы данных int64 и double) занимает в памяти 8 байт.
Похожие статьи: