我在研究vcl消息机制的时候碰到一个问题:
我看到delphi中TWMMouse是这样定义的
type
TWMMouse = packedrecord //疑惑一
Msg: Cardinal;
Keys: Longint;
case Integer of//疑惑二
0: (
XPos: Smallint;
YPos: Smallint);//疑惑三
1: (
Pos: TSmallPoint;
Result: Longint);
end;
尤其是case语句在object pascal中可以这样写吗?怎么没end ?
还有packedrecord是什么意思?
请高手给我讲解一下,谢谢!
我看到delphi中TWMMouse是这样定义的
type
TWMMouse = packedrecord //疑惑一
Msg: Cardinal;
Keys: Longint;
case Integer of//疑惑二
0: (
XPos: Smallint;
YPos: Smallint);//疑惑三
1: (
Pos: TSmallPoint;
Result: Longint);
end;
尤其是case语句在object pascal中可以这样写吗?怎么没end ?
还有packedrecord是什么意思?
请高手给我讲解一下,谢谢!
比如
type
date=packed record
day:1..31;
month:1..12;
year:1960..1999;
end
如果不压缩,需要三个存储单元来存储这个记录,假如整数占用16位,则上面需要48位空间,其实1..31只需要5个二进制位就可以了,所以可以节省空间。不知道我说的是否清楚?
另外带with的record,称为变体纪录,case和record公用一个end;
case integer of
中的integer 怎讲 ?