Форум: "Начинающим";
Текущий архив: 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.45 MB
Время: 0.041 c