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

Вниз

Размер множества   Найти похожие ветки 

 
Германн ©   (2006-10-23 16:01) [0]

То ли я совсем тупой, то ли...
Есть следущие типы:
 TPin = (A1,B1,C1,A2,B2,C2,A3,B3,C3,A4,B4,C4,A5,B5,C5,A6,B6,C6,None);
 TPinSet = Set of TPin;

Я работал в полной уверенности, что SizeOf(TPinSet) = 3. А глянул в Evaluate/Modify, он показывает, что размер = 4. Ну откуда 4? Во множестве всего 19 бит?


 
Dmitrij_K   (2006-10-23 16:04) [1]

выравнивание ?


 
Ketmar ©   (2006-10-23 16:05) [2]

оттуда, что с LongWord работать проще. при $Z1 и восьми битах будет байт. при $Z2 и восьми битах будет слово. при $Z4 и восьми битах будет двойное слово.
для 16 бит -- слово, слово, двойное слово.
если бит больше 16 -- двойное слово, двойное слово, двойное слово.


 
default ©   (2006-10-23 16:24) [3]

TPin = (A1, A2, A3, A4, A5, A6, A7, A8,
         A9, A10, A11, A12, A13, A14, A15, A16,
         A17, A18, A19, A20, A21, A22, A23, A24,
         A25, A26, A27, A28, A29, A30, A31, A32,
         A33, A34, A35, A36, A37, A38, A39, A40);

даст пять байт
и не более
команда включения элемента во множество работает с 32-разрядными операндами в 32 оси
делов


 
default ©   (2006-10-23 16:25) [4]

короче говоря на низком уровне команды обслуживающие множества работают с 32-разрядными операднами


 
default ©   (2006-10-23 16:26) [5]

TPinSet даст пять байт...ну короче понятно и так думаю...


 
Германн ©   (2006-10-23 16:46) [6]

Проблему решил, но так и не понял причём тут директива $Z, относящаяся к enumerated type и множества. Ладно, вечером буду читать и экспериментировать. Сейчас поеду ставить программу на объект.


 
Anatoly Podgoretsky ©   (2006-10-23 16:49) [7]


> не понял причём тут директива $Z, относящаяся

Определяет выравнивание, величина по умолчанию зависит от версии Дельфи


 
default ©   (2006-10-23 17:08) [8]

по-моему выравнивание тут не причём
а лишь причём разрядность процессора
что с изменением выравнивания что-то меняется?


 
Ketmar ©   (2006-10-23 18:01) [9]

$Z задаёт размер по-умолчанию.


 
Германн ©   (2006-10-23 22:37) [10]

Да нет. Директива $Z не имеет никакого отношения к размеру множества.
Эксперименты показали, что компиллятор просто ненавидит размер множества = 3. И добавляет к необходимым 3-м байтам множества четёртый нулевой. Любой другой размер 1,2,4,5,6,7 и т.д. считается нормальным. Наверно в какой-нибудь умной книжке и объяснено чем 3 хуже прочих, но мне искать лень. Просто запомню на будущее.


 
Loginov Dmitry ©   (2006-10-23 23:28) [11]

Германн ©   (23.10.06 16:01)
Я работал в полной уверенности, что SizeOf(TPinSet) = 3


Хорошо, не 3.5

%)))



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

Форум: "Основная";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
15-1163485995
alex_drob
2006-11-14 09:33
2006.12.03
Лицензионный WinXP и новый HDD


15-1163507336
alles
2006-11-14 15:28
2006.12.03
ActiveX в browser


2-1163273365
(_)
2006-11-11 22:29
2006.12.03
Проект.


11-1140014372
Игорь Шевченко
2006-02-15 17:39
2006.12.03
К вопросу о замене System/SysInit в Delphi и обработке исключений


6-1152875173
NaLom
2006-07-14 15:06
2006.12.03
Блок инета





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский