Главная страница
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.045 c
6-1144164046
WebSqlNeederr
2006-04-04 19:20
2006.08.20
Как отловить, что часть документа загружена?


1-1152195070
PRT
2006-07-06 18:11
2006.08.20
Как записать содержимое окна OpenGL в bmp файл?


3-1150353422
s_t_d
2006-06-15 10:37
2006.08.20
Отображение длинных текстов в DBGrid


2-1154185066
читатель
2006-07-29 18:57
2006.08.20
Первый вопрос.


15-1153674811
lookin
2006-07-23 21:13
2006.08.20
Как появляются НЛО: почти на примере...