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;這段代碼見於Messages單元裡面.其中的Case Integer of 意味著什麼,什麼情況下為0,什麼情況下為1
為什麼只有一個end,按常理應該有兩個end,一個End 對應於packed record,另外一個對應於case of請大家來回答,謝謝
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;這段代碼見於Messages單元裡面.其中的Case Integer of 意味著什麼,什麼情況下為0,什麼情況下為1
為什麼只有一個end,按常理應該有兩個end,一個End 對應於packed record,另外一個對應於case of請大家來回答,謝謝
解决方案 »
- 最近哪里有工作机会,请大家给推荐一个广州的工作!!
- JonnySun(智者寡言)接分
- delphi初学者
- delphi 6中DBGrid数据导出到Excel中,老是把DBGrid中的第一行的值赋给了Excel的其他所有涉及到的单元格?
- 100分求救BDE打包--在线等待
- 哈哈,谁肯当我的老师???
- 100分求两本书的下载地址!
- 如何让我编的程序能够打开所有这样类型的文件?
- 求反编译高手
- 谁有sybase12.5的客户端。我想用它与ADO来操作后台的sybase11。
- 高手帮帮我,'喆'字不能显示问题?
- 各位高手,我想用API 画一个图形,在正常情况下我输入数据他可以画得很标准,但我把数据全部乘一个比例,想用这个方法来实现图形的缩放。
case也可以随意给个变量;type
MyRe = record
FInt: integer;
case I : integer of
1: (A: integer);
2: (B: Boolean);
end;具体的用途,未用过呢
:)
TMyRe = record
FInt: integer;
case I : integer of
1: (A: integer);
2: (B: Boolean);
end;var
MyRe: TMyRe;
Bo: Boolean;
begin
MyRe.A := 1;
Bo := MyRe.B; //{true} when MyRe.A := 0; (B false)
if Bo then Caption := '';
end;
type
TMyRe = record
FInt: integer;
case I : integer of
1: (A: integer);
2: (B: Boolean);
end;var
MyRe: TMyRe;
Bo: Boolean;
begin
MyRe.A := 1;
Bo := MyRe.B; //{true} when MyRe.A := 0; (B false)
if Bo then Caption := '';
end;-----------------------------------------
人家都这样给例子了;
你没有看到//{true} when MyRe.A := 0; (B false)吗?
var
m: TMessage;
begin
m.WParam:= 500;
showmessage(inttostr(m.WParamLo));//WParam所在内存的低位
showmessage(inttostr(m.WParamHi));//WParam所在内存的高位
m.WParam:= 4294967295;
showmessage(inttostr(m.WParamLo));//WParam所在内存的低位
showmessage(inttostr(m.WParamHi));//WParam所在内存的高位
end;能明白吗?
这种描述就是一种规定的语法结构,为了保证语法的一致性(是下一种描述的特例),本身没有什么意义。
但是
case 成员名:类型 of
这种描述,成员确实占据存储空间,可以使用的。
另外,如果case中使用的是一个变量,则可以使用这个变量,但是必须先对其赋值
type
ta = record
lo: word;
hi: word;
end; a : ta;
b : Cardinal;你可以用 b := Cardinal(a)把他强制转换成Carninal;同样,你可以用a := TA(b)把Cardinal强制转换为两个Word. 显然这比较麻烦, 那么就设计一个方案来省点事吧,于是
TYPE ta= record
case Integer of
0: (
lo: word;
hi: word);
1: (
c: cardinal;
);
end;
就应运而生了。