delphi变体记录如何使用

上传人:平*** 文档编号:13300557 上传时间:2017-10-23 格式:DOC 页数:2 大小:45.27KB
返回 下载 相关 举报
delphi变体记录如何使用_第1页
第1页 / 共2页
delphi变体记录如何使用_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《delphi变体记录如何使用》由会员分享,可在线阅读,更多相关《delphi变体记录如何使用(2页珍藏版)》请在金锄头文库上搜索。

1、delphi 的变体记录类型变体的条件是什么? TEmployee = recordID: Integer; case Integer of0:(YearMoney: Integer); 1:(MonthMoney: ShortInt); end;上面变体记录类型什么时 候该选择 0 什么时候该选择 1,这个条件是什么?系统怎么判定的,还有 case integer of 这句怎么解析?谢谢大家。精彩回答 这样理解是有误的,这只是一种写法,并不是要赋给 0,1 什么的,表示的是这个记录有两种变体。系统跟据你所使用的成员变量名称来自动进行判断。case integer of 其实是指对一块内存的

2、不同解读方式,YearMoney ,MonthMoney会共用一块系统为其分配的内存。var emp: TEmployee你这样的输入 emp.的时候就会显示如上两个属性(即所有的),怎么用就是你自己的事了。系统不会判定到底是 0 还是 1,这个都是你自己处理的,你自己判定到底用哪个值,你可以把结构改成这样:TEmployee = recordID: Integer; case t:Integer of/注意:这里加了个 t,用来区分用 0 还是用 10:(YearMoney: Integer); 1:(MonthMoney: ShortInt); end;给这个结构赋值的时候,你自己要赋给

3、t 一个值,这样你才能判断是年薪还是月薪。变体结构最大的意义是内存共享,象你上面的结构,其实 YearMoney 和MonthMoney 都用同一块内存(虽然它们长度不一样 ),这样,当你给一个赋值时另一个也会有值,只是因为数据类型不同而有不同的表现结果。给你起一个简单的例子你就明白了,比如 Delphi 中的 TColor(颜色类型),其实它是一个整型,而我们知道,颜色是由红(r),绿(g), 蓝(b) 三原色组成的,那我们怎么知道一个颜色值的 R,G,B 值各是多少呢?请看下面:定义一个变体结构:TypeTColorRec=recordcase Integer of0:(Color:TCo

4、lor);1:(r,g,b:Byte);end;定义结构体后,其实 Color 和 r,g,b 三个都共享一块内存,但是 TColor 是整型占四个字节,而 r,g,b 三个总共只占三个字节,所以有一个字节没用上。下面是内存的结构,0 就是没用上的。|0|b|g|r|程序:procedure TForm1.Button1Click(Sender: TObject);var cRec:TColorRec;begincRec.Color:=RGB(50,100,200);/调 RGB 函数生成一个颜色值并赋给结构的ColorshowmessageFmt(r:%d g:%d b:%d ,cRec.r,cRec.g,cRec.b);/通过结构返回 r,g,b 各值end;这样应该明白了吧

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号