Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.039 c
5-1127570241
bneuro
2005-09-24 17:57
2006.08.20
Помещение в DLL своего компонента


2-1154521483
Id
2006-08-02 16:24
2006.08.20
Функции в Delphi


2-1154270817
Филипок:)
2006-07-30 18:46
2006.08.20
Помогите!!!!!!


15-1153765576
Некто
2006-07-24 22:26
2006.08.20
ПлакалЪ :))))


4-1146253724
Beginner81
2006-04-28 23:48
2006.08.20
Как запустить приложение (игру) в окне?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский