Главная страница
    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-1163482783
YurkaT
2006-11-14 08:39
2006.12.03
Сообщение, результата запроса, убрать


15-1163075753
Сало
2006-11-09 15:35
2006.12.03
Вышел релиз Firebird 2.0


2-1163530310
Vasiliy
2006-11-14 21:51
2006.12.03
Перекрыл GetClientRect, отрисовывается не весь компонент


15-1163508842
Андрей Сенченко
2006-11-14 15:54
2006.12.03
DOC. Память для EXEC


11-1140042552
alex_s
2006-02-16 01:29
2006.12.03
FB/IB





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