Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Если ли в DELPHI трех байтовй тип ?   Найти похожие ветки 

 
NikNet ©   (2005-08-24 17:29) [0]

Проблема надо создать структуру

t = REcord
b:Byte;
tr: три байта ? :(
end;


 
begin...end ©   (2005-08-24 17:32) [1]

type
 TMyType = packed record
   A: array [1..3] of Byte
 end

TMyType -- трёхбайтовый тип.


 
begin...end ©   (2005-08-24 17:32) [2]

type
 TMyType = array [1..3] of Byte

Тоже трёхбайтовый тип.


 
NikNet ©   (2005-08-24 17:33) [3]

ну  это я знаю а вот тип есть? По моему Integer трех байтовый?


 
begin...end ©   (2005-08-24 17:34) [4]

> NikNet ©   (24.08.05 17:33) [3]

> ну  это я знаю а вот тип есть?

А TMyType -- это что, не тип?

> По моему Integer трех байтовый?

Нет.


 
Игорь Шевченко ©   (2005-08-24 17:48) [5]

А почему бы какую книжку умную по Delphi не почитать ?


 
tesseract ©   (2005-08-25 11:05) [6]

>>По моему Integer трех байтовый?

Зависит от типа ОС
DOS - 2 байта
Windows/*nix/netware/ - 4 байта
Win64/*nix 64 - 8 байт


 
ArtemESC   (2005-08-25 13:38) [7]

>>Если ли в DELPHI трех байтовй тип?
 T3Byte = 0..$FFFFFF


 
Джо ©   (2005-08-25 13:43) [8]


> [7] ArtemESC   (25.08.05 13:38)
>  T3Byte = 0..$FFFFFF

Неправда ваша.


 
tesseract ©   (2005-08-25 13:44) [9]

>>>T3Byte = 0..$FFFFFF
Будет он 4 байтным. просто значений больше FFFFFF принимать не будет.
И вообще все значений всё равно компилятором до 4 байт добиваются ( чтобы intel шустрее работал).


 
ArtemESC   (2005-08-25 13:47) [10]

>>И вообще все значений всё равно компилятором до 4 байт >>добиваются

Даже Byte?


 
Джо ©   (2005-08-25 13:52) [11]


> [9] tesseract ©   (25.08.05 13:44)

И ваша неправда.


 
tesseract ©   (2005-08-25 13:58) [12]

>> Даже Byte?

Даже byte.
поэтому такой тип данных

MyRec = record
   A,B,C:byte
 end;

Займёт 12 байт

такой

MyRec = packedrecord
   A,B,C:byte
 end;

Займёт 3 байта


MyRec = packed record
   A:array[1..3] of byte;
 end;


Ни фига не понял зачем такая радость ( массив да в записи если можно type Myrec= array[1..3] of byte;)
Займёт 3 байта + информация о длине массива.

Кстати определение массива как начинающегося с нуля немного повысит производительность. Так легче найти элемент массива в памяти.


 
ArtemESC   (2005-08-25 14:00) [13]

>>Джо
>неправда ваша.
Мне все-таки интересно в чем я не прав...


 
tesseract ©   (2005-08-25 14:18) [14]

>>>Джо
>>неправда ваша.
>Мне все-таки интересно в чем я не прав...

Мне честно говоря тоже


 
Bless ©   (2005-08-25 14:39) [15]


tesseract ©  (25.08.05 13:58) [12]

MyRec = record
 A,B,C:byte
end;
Займёт 12 байт


3 байта займет, а не 12.


 
Игорь Шевченко ©   (2005-08-25 14:40) [16]


> И вообще все значений всё равно компилятором до 4 байт добиваются
> ( чтобы intel шустрее работал).


Не затруднит ли уважаемого автора поведать, в какой именно месте компилятор добивает значения до 4-х байт ?


 
Bless ©   (2005-08-25 15:02) [17]

tesseract ©  (25.08.05 13:58) [12]
Ни фига не понял зачем такая радость ( массив да в записи если можно type Myrec= array[1..3] of byte;)
Займёт 3 байта + информация о длине массива.


Буду признателен, если ткнете меня носом в то место, где хранится информация о длине статического массива.
Имхо, такого места нет, но вдруг я ошибаюсь.


 
Fay ©   (2005-08-25 17:28) [18]

2 tesseract ©   (25.08.05 13:44) [9]
>> И вообще все значений всё равно компилятором до 4 байт добиваются

Только при {$Z4}


 
Bless ©   (2005-08-25 17:47) [19]

[i]Fay ©  (25.08.05 17:28) [18]

2 tesseract ©  (25.08.05 13:44) [9]
>> И вообще все значений всё равно компилятором до 4 байт добиваются

Только при {$Z4}
[/i]
{$Z} влияет на выделяемый размер под переменные enumerated types.
Так что "все значения компилятором до 4 байт" даже с этой директивой не "добиваются". Переменная типа byte по-прежнему будет занимать один байт.


 
tesseract ©   (2005-08-25 18:06) [20]

>>Буду признателен, если ткнете меня носом в то место, где хранится >>информация о длине статического массива.
>>Имхо, такого места нет, но вдруг я ошибаюсь.

Это служебная информация, насколько помню находится перед массивом, как и у Pascal-строки(она ведь массив char).


 
tesseract ©   (2005-08-25 18:11) [21]

>>enumerated types
А что массив или целые числа уже enumerated ????

вроде как массивы относятся к структурам а байта - к ordinal;

>>to Bless
Согласен, оплошал.... :-((((


 
Fay ©   (2005-08-25 18:26) [22]

2 Bless ©   (25.08.05 17:47) [19]
Что-то я не понял... Вы серьёзно объъясняете мне, что 1 байт весит 1 байт?! Дожил.

Я говорил именно про "выделяемый размер".


 
Fay ©   (2005-08-25 18:27) [23]

2 tesseract ©   (25.08.05 18:11) [21]
>> целые числа уже enumerated ????
Если хотите, то пусть будет "ещё".
8)


 
tesseract ©   (2005-08-25 18:38) [24]

>> Если хотите, то пусть будет "ещё".
Не уверен, что хочу. А то ещё ограничат массив 256 символами...


 
begin...end ©   (2005-08-25 18:39) [25]

> Fay ©   (25.08.05 18:26) [22]

Директива {$Z} не влияет на размер выделяемой памяти для типа Byte, поскольку тип Byte не является перечислимым типом.


 
Fay ©   (2005-08-25 18:59) [26]

2 begin...end ©   (25.08.05 18:39) [25]
>> Byte не является перечислимым типом
В смысле?! Где такое написано?


 
jack128 ©   (2005-08-25 19:03) [27]

Fay ©   (25.08.05 18:59) [26]
В смысле?! Где такое написано?

в хелпе вестимо...  Разницу между перечисляемыми(Enumeration) и порядковыми(Ordinal) типами чувствуем??


 
begin...end ©   (2005-08-25 19:04) [28]

> Fay ©   (25.08.05 18:59) [26]

> Где такое написано?

В справке. Целый и перечислимый типы являются подмножествами порядкового типа. Из этого не следует, что целый тип является перечислимым.

> tesseract ©   (25.08.05 18:06) [20]

Перед статическим массивом нет служебной информации.


 
Fay ©   (2005-08-25 19:09) [29]

2 jack128 ©   (25.08.05 19:03) [27]
Видимо, нет 8(


 
Fay ©   (2005-08-25 19:18) [30]

Всё, дошло - торможу. Просто очень давно запало в голову (не помню откуда, ещё до Delphi), что перечисляемые - все годащиеся для for. Так, порой, и вспоминаю...


 
vrem   (2005-08-25 19:26) [31]

Бмп 24 бит так и пишутся в файл - на пиксель 3 байта, и если вручную считывать вопрос сабжа может возникнуть, типа как читать то быстрей ;)


 
tesseract ©   (2005-08-25 21:40) [32]

>>Перед статическим массивом нет служебной информации.

Уже признался в этом :-)

Прикол с 4-мя байтами если интересно могу объяснить (по цифровой схемотехнике -4). Кстати 24bit медленней 32 и 16 , поэтому в новых windows его нет.

Вот вам ещё забавный факт ( по моему случалось в Delphi 4 или 5 в старшей не пробовал).
Сравнение cardinal с integer вызывает предупреждение,  int64  с unsigned вариантом то-ли вообще не компилируется, то-ли к AV приводит.
>>Бмп 24 бит так и пишутся в файл - на пиксель 3 байта, и если вручную считывать вопрос сабжа может возникнуть, типа как читать то быстрей.

ReadBuffer/WriteBuffer - так происходит копирование в Total commander.


 
Fay ©   (2005-08-26 13:37) [33]

2 tesseract ©   (25.08.05 21:40) [32]
>> ReadBuffer/WriteBuffer - так происходит копирование в Total commander.
Исходники на руках?


 
tesseract ©   (2005-08-26 13:53) [34]

to Fay >> Нет логика в голове.


 
Brother   (2005-09-09 11:35) [35]

Да, а четность что такое не знаете?
А трех байтовых не бывает!


 
Fay ©   (2005-09-09 14:36) [36]

2 tesseract ©   (26.08.05 13:53) [34]
Total commander вызывает ReadBuffer/WriteBuffer в голове?!
8)


 
Defunct ©   (2005-09-11 04:00) [37]

веселая ветка ;>


 
Defunct ©   (2005-09-11 04:00) [38]

Удалено модератором


 
tesseract ©   (2005-09-12 18:09) [39]

>>Да, а четность что такое не знаете? А трех байтовых не бывает!

Чётность знаем, и значения трёхбайтовой структуры могут быть чётными :-).  

А ещё процессор не работает с  числами меньше 32 бит (4 байта) (по крайней мере начиная с intel Pentium Pro) Он их приводит к 32 бита (замедление работы).


 
Fay ©   (2005-09-12 20:33) [40]

2 tesseract ©   (12.09.05 18:09) [39]
>> А ещё процессор не работает с  числами меньше 32 бит
Слабо доказать?



Страницы: 1 2 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.035 c
14-1127390200
han_malign
2005-09-22 15:56
2005.10.16
MS VC++ - загадка


3-1125577018
Term
2005-09-01 16:16
2005.10.16
Подзапросы


2-1126858358
Андрей гость
2005-09-16 12:12
2005.10.16
Разбить текстовое поле на части


2-1125919778
lmz
2005-09-05 15:29
2005.10.16
Запрос на выборку


14-1127393797
boriskb
2005-09-22 16:56
2005.10.16
mp3 плейер не хотите на дармовщину?