Форум: "Основная";
Текущий архив: 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.042 c