![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TMessage [D7, XP]
Nikolaich © (2006-07-30 19:16:00)Объясните пожалуйста мне эту структуру.
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... что это значит, не улавливаю логику.
Германн (2006-07-31 01:16:00) [1]
> Anatoly Podgoretsky © (30.07.06 20:37) [4]
>
> Тогда это будет реальный селектор, как правило не надо.
>
Уточню. "Чаще всего" не надо.
Тут уже "семантика" работает. :-)
Nikolaich (2006-07-30 21:24:00) [2]Всё, теперь понял. Спасибо друзья.
Anatoly Podgoretsky (2006-07-30 20:37:00) [3]Тогда это будет реальный селектор, как правило не надо.
Германн (2006-07-30 20:15:00) [4]
> Данный селектор никак не используется.
Добавлю.
Но если надо, то и селектор можно использовать как переменную водящую в эту запись.
Anatoly Podgoretsky (2006-07-30 19:46:00) [5]Не нравится Ineger, воспользуйся Boolean - это всего лишь псевдоселектор, можно любой. Boolean не хуже, тоже два состояния. Данный селектор никак не используется.
begin...end (2006-07-30 19:31:00) [6]> Nikolaich (30.07.06 19:16) [0]
Это пример записи с вариантной частью. Одна и та же часть такой записи может рассматриваться как различные наборы полей. В данном случае так сделано для того, чтобы можно было легко получить доступ к старшему и младшему словам полей WParam, LParam и Result. Например, поле WParam занимает 4 байта, т.к. оно имеет тип Longint. Эти же самые 4 байта можно интерпретировать как два двухбайтовых поля (слова): WParamLo (Low, младшее слово поля WParam) и WParamHi (High, старшее слово).
См. в справке: Variant parts in records.