Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.048 c
4-1144670484
Acidlex
2006-04-10 16:01
2006.08.20
Измерение уровня входного сигнала звуковой карты


6-1144247999
cosmos
2006-04-05 18:39
2006.08.20
Как создать службу текстовых сообщений на подобие ICQ


15-1153644541
Каг Дила?
2006-07-23 12:49
2006.08.20
Сетевая игра


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


2-1154100660
qwe777
2006-07-28 19:31
2006.08.20
Добавление записей DBGrid




   Наверх