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

Вниз

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

 
Германн ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1163666710
Megabyte
2006-11-16 11:45
2006.12.03
Снова про Трей, какие модули подключать, в факе не указано?


15-1163143100
Jeer
2006-11-10 10:18
2006.12.03
Вирус


2-1163866345
~~~
2006-11-18 19:12
2006.12.03
Проверить существование объекта.


2-1163322472
ProgRAMmer Dimonych
2006-11-12 12:07
2006.12.03
Как нарисовать полностью закрашенную окружность на TCanvas?


15-1163246802
neud
2006-11-11 15:06
2006.12.03
sql