菜鸟问题,有关记录变量的定义(60分)

  • 主题发起人 主题发起人 delpher2003
  • 开始时间 开始时间
D

delpher2003

Unregistered / Unconfirmed
GUEST, unregistred user!
1 TMessage = packed record
2 Msg: Cardinal;
3 case Integer of
4 0: (
5 WParam: Longint;
6 LParam: Longint;
7 Result: Longint);
8 1: (
9 WParamLo: Word;
10 WParamHi: Word;
11 LParamLo: Word;
12 LParamHi: Word;
13 ResultLo: Word;
14 ResultHi: Word);
15 end;


以上是Messages.pas单元中对TMessage的定义,不明之处有以下几点:
a、第一行的 packed 是什么意思?
b、第三行的case语句中的 Integer 从哪里取值?
c、还有这个case语句没有end;在记录中使用case语句有什么样的规则?是否还能使用其他诸如if等语句?

多谢各位
 
1 packed record指示内存分配不必进行对齐。 占内存比record小 查找速度慢一点
2 Integer只是界定符而已,没有什么实际意义
3 record的变体部分必须在末尾 不需要end. if不行


 
谢谢andy263,还不太明白
---2 Integer只是界定符而已,没有什么实际意义
谁的界定符?

--3 record的变体部分必须在末尾
什么是变体部分?
 
你看看delphi的Trect
TRect = packed record
case Integer of
0: (Left, Top, Right, Bottom: Longint);
1: (TopLeft, BottomRight: TPoint);
end;

赋值的时候 可以
Rect(1,1,2,2);
也可以
a(1,1) b(2,2)
Rect(a,b);

明白了没?

case xxx 这个就是变体部分。
 
看了半天,还不明白
---Rect(1,1,2,2);
这样赋值是什么结果?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2461052
 
多人接受答案了。
 

Similar threads

后退
顶部