Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

Если ли в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.075 c
14-1127394433
Narik
2005-09-22 17:07
2005.10.16
дата время и тд из FileListBox и DirectoryListBox


1-1127375465
Альф
2005-09-22 11:51
2005.10.16
Как поймать исключение ?


8-1116945542
Agent[007]
2005-05-24 18:39
2005.10.16
OpenGl и WinXP


2-1127120802
azamatufa
2005-09-19 13:06
2005.10.16
Массив из элекментов типа MyClass (так сказать)


2-1127120457
Новичок1
2005-09-19 13:00
2005.10.16
Народ посоветуйте как сделать остановку программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский