Целые, действительные и булевы типы данных в Delphi
Август 6th, 2013 admin
В системе программирования Delphi типы данных немного расширены чем в Паскале.
Целые типы данных:
Тип | Диапазон значений | Занимает память в байтах | Хранение отрицательных чисел |
Byte | 0 — 255 | 1 | нет |
Word | 0 — 65535 | 2 | нет |
LongWord | 0 — 4294967295 | 4 | нет |
ShortInt | -128 — 127 | 1 | да |
SmallInt | -32768 — 32767 | 2 | да |
Cardinal | 0 — 4294967295 | нет | |
Integer | -2147483648 — 2147483647 | 4 | да |
LongInt | -2147483648 — 2147483647 | 4 | да |
Int64 | от -263 до 263 -1 | 8 | да |
Действительные числа:
Тип | Диапазон значений | Число значащих разрядов | Занимает память в байтах |
Real48 | ±2. 9*10-39 до ±1.7*1038 | 11 — 12 | 6 |
Real | ±5.0*10-324 до ±1.7*10308 | 15 — 16 | 8 |
Single | ±1.5*10-45 до ±3.4*1038 | 7 — 8 | 4 |
Double | ±5.0*10-324 до ±1.7*10308 | 15 — 16 | 8 |
Extended | ±3.6*10-4932 до ±1.1*104932 | 19 — 20 | 10 |
Comp | -263 до 262-1 | 19 — 20 | 8 |
Currency | -922337203685477.5808 до 922337203685477.5807 | 19 — 20 | 8 |
Булевы типы данных:
Тип | Значения | Память для значения |
Boolean | Булева величина в 1 байт | |
ByteBool | Булева величина в 1 байт | 1 |
WordBool | Булева величина в 1 слово | 2 |
LongBool | Булева величина в 2 слова | 4 |
. действительные числа delphi
Опубликовано в рубрике Справочник
Комментирование и размещение ссылок запрещено.
тип данных
← →
barin
(2007-07-20 07:49) [0]
Хочу изначально завести переменную 16-го вида(HEX) , как сделать не знаю . Не хочу работать со строками . В Delphi есть такая возможность ?-подскажите . Заранее спасибо.
← →
Elen ©
(2007-07-20 08:07) [1]
> Не хочу работать со строками
И не надо. Возьми обычный integer. Чем не емкость для 16-ричного числа?
← →
Сергей М. ©
(2007-07-20 08:13) [2]
> Хочу изначально завести переменную 16-го вида(HEX) , как
> сделать не знаю
Оч просто :
var HexValue: String;
> Не хочу работать со строками
А куда ты денешься ?
Hex-представление числа есть строка из hex-символов и ничто иное.
Так что ты уж как-нить определись с «хочу» или «не хочу»)
← →
Anatoly Podgoretsky ©
(2007-07-20 08:44) [3]
> barin (20.07.2007 07:49:00) [0]
Жениться вам барин надо.
← →
oxffff ©
(2007-07-20 08:47) [4]
> Хочу изначально завести переменную 16-го вида(HEX) , как
> сделать не знаю . Не хочу работать со строками . В Delphi
> есть такая возможность ?-подскажите . Заранее спасибо.
А что мешает?
var a:integer;
begin
a:=$ABCDEF;
end;
← →
Anatoly Podgoretsky ©
(2007-07-20 09:40) [5]
> oxffff (20. 07.2007 08:47:04) [4]
А то что это не HEX
← →
oxffff ©
(2007-07-20 09:44) [6]
> Anatoly Podgoretsky © (20.07.07 09:40) [5]
> > oxffff (20.07.2007 08:47:04) [4]
>
> А то что это не HEX
Не понял вас?
← →
barin
(2007-07-20 09:53) [7]
Большое спасибо попробую все , кроме жениться.
← →
Anatoly Podgoretsky ©
(2007-07-20 09:54) [8]
> oxffff (20.07.2007 09:44:06) [6]
Это интеджер (бинари), а hex это текст по определению.
← →
oxffff ©
(2007-07-20 10:11) [9]
> а hex это текст по определению.
hex — это hexadecimal.
The dollar-sign prefix indicates a hexadecimal numeral—for example, $8F.
← →
Anatoly Podgoretsky ©
(2007-07-20 10:31) [10]
> oxffff (20.07.2007 10:11:09) [9]
Ты читаешь справку про литералы, а не типы.
← →
oxffff ©
(2007-07-20 10:45
> Anatoly Podgoretsky © (20.07.07 10:31) [10]
> > oxffff (20.07.2007 10:11:09) [9]
>
> Ты читаешь справку про литералы, а не типы.
а причем здесь типы?
Типа hex нет. Вы что не в курсе?
← →
Desdechado ©
(2007-07-20 10:48) [12]
HEX — это система счисления, если уж на то пошло.
Поэтому не может быть переменной HEX. Может быть численная переменная, а способ представления — это совсем другое, обычно строчное.
PS кстати, Integer годится только для целых, а ведь можно захотеть в HEX Представить и нецелые.
← →
Anatoly Podgoretsky ©
(
HEX вид (тип) есть строкое представление любых двоичных данных, наряду с ним есть десятичнное представление, восьмиричное, двоичное представление и другие.
Ты привел справку по текстовым константам ака литералам.
← →
oxffff ©
(2007-07-20 12:48) [14]
> HEX вид (тип) есть строкое представление любых двоичных
> данных, наряду с ним есть десятичнное представление, восьмиричное,
> двоичное представление и другие.
Благодарю. Мне это известно.
А что нужно автору было не известно.
← →
Anatoly Podgoretsky ©
( 2007-07-20 13:49) [15]
> oxffff (20.07.2007 12:48:14) [14]
Ну так это автор виноват.
← →
barin
(2007-07-20 13:56) [16]
Спор я вижу не здоровый. Расскажу . Есть Smpp симулятор . Мне надо с ним законектится и аторизоваться . Для этого требется передать к примеру поток такого вида 0х00000001 и есчо кучу всего, но 0х0000001 должен весить не более 4 не менее 4х байт , а если брать строки то ето все десять . Именно поетому я и хотел работать именно с типом в Delphi , а не приводить к нему.
← →
Amoeba ©
(2007-07-20 14:08) [17]
В таком случае нужен тип Integer, его размер 4 байта.
← →
Anatoly Podgoretsky ©
(2007-07-20 14:10) [18]
> Amoeba (20.07.2007 14:08:17) [17]
И никаких хекс, поскольку потребуется 8 байт.
← →
barin
(2007-07-20 14:13) [19]
Amboeba . Извини что не пояснил полностью то есть и есчо такого же формата число , то есть 16-ое но вес его не должен превышать 1 байта
← →
Amoeba ©
(2007-07-20 14:17) [20]
Тогда используй тип Byte.
← →
lamerskii_vopros
(2007-07-20 14:19) [21]
> 1 байта
Byte
← →
barin
(2007-07-20 14:27) [22]
Все такие умные когда с утра до него вопрос обсудился (lamerskii_vopros) . Я понял на счет byte уже после того как нажал добавить. Запарелся просто.
Если возникнут вопросы именно Hex характера сегодя я их есчо задам. Всем БОЛЬШОе СПАСИБО!
Delphi Types — iamaprogrammer
http://docwiki.embarcadero.com/radstudio/xe6/en/delphi_data_types
Типы данных
.
Типы данных с плавающей точкой
Тип | Описание | Указатель | Запись | |
---|---|---|---|---|
Значение с плавающей запятой одинарной точности (4 байта) | PSодинарный | TSingleRec | ||
Двойной | Значение двойной точности с плавающей запятой (8 байтов) | PДвойной | TDoubleRec | |
Расширенный | Значение с плавающей запятой повышенной точности (10 байт в Win32, но 8 байт в Win64) См. страницу о приложениях для нескольких устройств. | PРасширенный | TExtended80Rec | |
Реальный | Псевдоним двойника | Н/Д | Н/Д |
Строковые и символьные типы данных
Тип | Описание | Указатель |
---|---|---|
AnsiChar | Символ ANSI | ПАнсиЧар |
Символ | Широкие символы (16 бит) | PChar |
Широкоугольный | 16-битный символ | PWideChar |
AnsiString | Представляет динамически выделяемую строку ANSI, максимальная длина которой ограничена только доступной памятью. | PAnsiString |
RawByteString | Используйте в качестве параметра метода или функции, не зависящего от кодовой страницы, или в качестве типа переменной для хранения данных BLOB. | PRawByteString |
UnicodeString | Строка Юникода | PUnicodeString |
Строка | Псевдоним для UnicodeString | PString |
Короткая строка | Строка длиной не более 255 символов | PShortString |
Широкая строка | Строка из 16-битных символов | Пвайдестринг |
Типы файловых данных
Тип | Описание | Указатель |
---|---|---|
Файл | Дескриптор файла | |
Текстовый файл, текст | Дескриптор текстового файла |
Логические типы данных
Тип | Описание | Указатель |
---|---|---|
Логический | Представляет логическое значение (истина или ложь). | PBoolean |
Байтбул | Представляет 8-битное логическое значение. | |
WordBool | Представляет 16-битное логическое значение. | PWordBool |
ЛонгБул | Представляет 32-битное логическое значение. | PLongBool |
Другие типы данных
Тип | Описание | Указатель |
---|---|---|
Массив | Представляет индексированную коллекцию элементов одного типа. | |
Запись | Представляет гетерогенный набор элементов. | |
Вариант | Представляет значения, тип которых может изменяться во время выполнения. | Вариант |
Указатель | Представляет указатель на данные любого типа. | PPointer |
Валюта | Тип данных с фиксированной точкой, используемый для хранения денежных значений. | Валюта |
Delphi и целочисленные типы данных — YAPB
Автор: Александру Чобану 26 декабря 2008 г. в разработке программного обеспечения
В последнее время в группах новостей CodeGear много дискуссий о типах данных Integer и поддержке 64-битных систем. Просто хотел уточнить некоторые моменты для тех, кто ждет 64-битного релиза RAD Studio (где-то в 2010 году).
«Основные» целочисленные типы (те, которые имеют постоянные размеры на всех платформах):
- Байт (1 байт, без знака)
- UInt8 (псевдоним для байт )
- ShortInt (1 байт, со знаком)
- Int8 (псевдоним для ShortInt )
- Слово (2 байта, без знака)
- UInt16 (псевдоним для Word )
- SmallInt (2 байта, со знаком)
- Int16 (псевдоним для SmallInt )
- LongWord (4 байта, без знака)
- UInt32 (псевдоним для LongWord )
- LongInt (4 байта, со знаком)
- Int32 (псевдоним для LongInt )
- UInt64 (8 байт, без знака)
- Int64 (8 байт, со знаком)
Ранее перечисленные целочисленные типы имеют фиксированный размер — это означает, что независимо от того, на какой ОС/ЦП вы работаете, эти типы будут иметь одинаковый размер.
Целочисленные типы, специфичные для ЦП, перечислены ниже:
- NativeUInt (Без знака, зависит от размера регистра ЦП)
- NativeInt (Подписано, зависит от размера регистра ЦП)
Обратите внимание, что размеры этих типов Integer на самом деле зависят от «целевой архитектуры », для которой вы собираетесь компилировать свою программу. Поэтому, если вы ориентируетесь на Windows для 64-разрядной версии, вы получите собственные целые числа шириной 8 байт. Если вы ориентируетесь на 32-разрядную версию Windows и запускаете приложение в 64-разрядной версии Windows, NativeInt по-прежнему будет иметь ширину 4 байта.
И, наконец, «общие» типы данных:
- Cardinal (без знака, зависит от определения Integer в ОС)
- Целое число (Подписано, зависит от определения целого числа ОС)
Да, это может сбивать с толку, но Integer и Cardinal зависят не от процессора, а от ОС. В случае 64-разрядной версии Windows «int» по-прежнему имеет ширину 4 байта.
Что произойдет, если вы захотите перевести свое приложение Delphi на 64-разрядную версию Windows? Не так уж и много. На самом деле мало что сломается, наиболее распространенными виновниками будут:
- Вызовы Windows API. Большинство API-интерфейсов Windows, которым требуются дескрипторы, могут выйти из строя, если вы, например, считаете HWND Cardinal . HWND будет 64-битным, а Cardinal останется 32-битным. То же самое относится и ко многим другим функциям Windows.
- Приведение указателя к целому числу и обратно. Pointer на самом деле имеет тот же размер, что и тип NativeInt , поэтому обязательно исправьте эти проблемы в своем коде. Просто замените Целое число с NativeInt. Многие разработчики приводят указатель к целому числу для выполнения некоторых арифметических действий, так что это довольно распространенный случай.