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

Вниз

TMessage   Найти похожие ветки 

 
Nikolaich   (2006-07-30 19:16) [0]

Объясните пожалуйста мне эту структуру.
 TMessage = packed record

   Msg: Cardinal;
   case Integer of
     0: (
       WParam: Longint;
       LParam: Longint;
       Result: Longint);
     1: (
       WParamLo: Word;
       WParamHi: Word;
       LParamLo: Word;
       LParamHi: Word;
       ResultLo: Word;
       ResultHi: Word);

 end;

Вроде все понятно, а вроде и нет. А не понятно именно case Integer... что это значит, не улавливаю логику.


 
begin...end ©   (2006-07-30 19:31) [1]

> Nikolaich   (30.07.06 19:16) [0]

Это пример записи с вариантной частью. Одна и та же часть такой записи может рассматриваться как различные наборы полей. В данном случае так сделано для того, чтобы можно было легко получить доступ к старшему и младшему словам полей WParam, LParam и Result. Например, поле WParam занимает 4 байта, т.к. оно имеет тип Longint. Эти же самые 4 байта можно интерпретировать как два двухбайтовых поля (слова): WParamLo (Low, младшее слово поля WParam) и WParamHi (High, старшее слово).

См. в справке: Variant parts in records.


 
Anatoly Podgoretsky ©   (2006-07-30 19:46) [2]

Не нравится Ineger, воспользуйся Boolean - это всего лишь псевдоселектор, можно любой. Boolean не хуже, тоже два состояния. Данный селектор никак не используется.


 
Германн ©   (2006-07-30 20:15) [3]


> Данный селектор никак не используется.

Добавлю.
Но если надо, то и селектор можно использовать как переменную водящую в эту запись.


 
Anatoly Podgoretsky ©   (2006-07-30 20:37) [4]

Тогда это будет реальный селектор, как правило не надо.


 
Nikolaich   (2006-07-30 21:24) [5]

Всё, теперь понял. Спасибо друзья.


 
Германн ©   (2006-07-31 01:16) [6]


> Anatoly Podgoretsky ©   (30.07.06 20:37) [4]
>
> Тогда это будет реальный селектор, как правило не надо.
>

Уточню. "Чаще всего" не надо.
Тут уже "семантика" работает. :-)



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

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

Наверх





Память: 0.46 MB
Время: 0.039 c
4-1145723538
V0va
2006-04-22 20:32
2006.08.20
AnimateWindow и TPanel


15-1153491701
stud
2006-07-21 18:21
2006.08.20
осаго при дтп. вот вопрос.


15-1153585694
Pazitron_Brain
2006-07-22 20:28
2006.08.20
За сколько можно продать комп?


2-1154037933
susergey
2006-07-28 02:05
2006.08.20
Командная строка


2-1154086481
S46E
2006-07-28 15:34
2006.08.20
Рисование





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