Главная страница
    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.042 c
2-1163771014
novill
2006-11-17 16:43
2006.12.03
Как сделать, чтобы при создании стандартной формы свойство


15-1163640001
DragoLeon
2006-11-16 04:20
2006.12.03
Создание PDF


2-1163737455
Steep
2006-11-17 07:24
2006.12.03
Строки


4-1153117586
Russ
2006-07-17 10:26
2006.12.03
Как из сервиса узнать имя текущего пользователя


2-1163532851
Troan_81
2006-11-14 22:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский