Delphi

Типы данных delphi: Типы данных Delphi

Целые, действительные и булевы типы данных в Delphi

Август 6th, 2013 admin

В системе программирования Delphi типы данных немного расширены чем в Паскале.


Целые типы данных:

ТипДиапазон значенийЗанимает память в байтахХранение отрицательных чисел
Byte0 — 2551нет
Word0 — 655352нет
LongWord0 — 42949672954нет
ShortInt-128 — 1271да
SmallInt-32768 — 327672да
Cardinal0 — 4294967295
4
нет
Integer-2147483648 — 21474836474да
LongInt-2147483648 — 21474836474да
Int64от -263 до 263 -18да

Действительные числа:

ТипДиапазон значенийЧисло значащих разрядовЗанимает память в байтах
Real48±2. 9*10-39 до ±1.7*103811 — 126
Real±5.0*10-324 до ±1.7*1030815 — 168
Single±1.5*10-45 до ±3.4*10387 — 84
Double±5.0*10-324 до ±1.7*1030815 — 168
Extended±3.6*10-4932 до ±1.1*10493219 — 2010
Comp-263 до 262-119 — 208
Currency-922337203685477.5808 до 922337203685477.580719 — 208

Булевы типы данных:

ТипЗначенияПамять для значения
BooleanБулева величина в 1 байт
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

) [11]


> 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 ©   (

2007-07-20 12:40) [13]

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

Типы данных

.

8-битное целое число без знака Пбайт Короткий интервал 8-битное целое число со знаком PShortInt Слово 16-битное целое число без знака Слово Малый Целый 16-битное целое число со знаком PSmallInt Кардинал 32-битное целое число без знака ПК Кардинал Длинное слово 32-битное целое число без знака PLongWord DWord 32-битное целое число без знака PLongWord Целое число 32-битное целое число со знаком PЦелое число LongInt 32-битное целое число со знаком PLongint UInt64 64-битное целое число без знака PUInt64 Целое64 64-битное целое число со знаком PInt64 Нативуинт 64-битное или 32-битное целое число без знака, зависящее от платформы PNativeUInt НативИнт 64-битное или 32-битное целое число со знаком в зависимости от платформы PNativeInt

Типы данных с плавающей точкой

Одиночный
Тип Описание Указатель Запись
Значение с плавающей запятой одинарной точности (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. Многие разработчики приводят указатель к целому числу для выполнения некоторых арифметических действий, так что это довольно распространенный случай.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *