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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
2-1154415522
ANB
2006-08-01 10:58
2006.08.20
Как узнать имя сертификта в контейнере (дискета) через CryptoAPI?


15-1153420548
Мефисто
2006-07-20 22:35
2006.08.20
Скульптуры с детских площадок (взято с ЖЖ) :)


15-1153428532
Footballer
2006-07-21 00:48
2006.08.20
А какие вы знаете смайлики? %)


15-1153550962
DillerXX
2006-07-22 10:49
2006.08.20
Второй раз пытаюсь - опять никак :(


11-1131530297
algambra
2005-11-09 12:58
2006.08.20
Совместное исп. KOL and VCL