Форум: "Начинающим";
Текущий архив: 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 бит
Слабо доказать?
← →
tesseract © (2005-09-13 10:20) [41]>>Слабо доказать?
А какие нас регистры ?
Компаратор кстати (сложением занимается) устройство железное, понимает только то, что у него вход - 32 ноги и выход 32 ноги.
Для тестов
Запусти под DOS (на intel Pentium Pro,2,3,4 + или VIA, AMD - RISC процессор)тесты производительности математики ( 16-бит) и потом запусти примерно такие же тесты на win98 (но 32 бит).
Знаешь одной разницей в битности такого не объяснишь.
Это история началась ещё с Pentium Pro и теперь продолжается в Itanium.
← →
PVOzerski © (2005-09-14 09:50) [42]Я для работы со ScanLine в 24-битных bitmap"ах юзаю что-то вроде такого
type
TTriplet = packed record
b, g, r: byte;
end;
TTriplets = array[0..0] of TTriplet;
PTriplets = ^TTriplets;
← →
Fay © (2005-09-14 10:05) [43]2 PVOzerski © (14.09.05 9:50) [42]
Если не секрет, почему неr, g, b
?
← →
Defunct © (2005-09-14 10:27) [44]> Fay
в bitmap"е цвет перевернут (относительно TColor).
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.042 c