巧用TAG属性保存对象的指针

一、巧用TAG属性保存对象的指针
   指针的数据类型是整型,一个指针就是一个整型的数值。所以凡整型的变量(这个整型的变量可以是声明在INI文件中,也可以是声明在函数中的)也好,对象的整型的属性也好,都可以用来存储一个指针。但对象往往没有多余的整型属性,而TAG属性就是整型的,正好可以用它来存放指针。

[delphi] view plain copy  print?
goods := TGoods.Create(Button1);  
goods.goodsId := goodsId;  
goods.goodsName := goodsName;  
goods.price := price;  
Button1.Tag := THandle(goods);  
使用:
[delphi] view plain copy  print?
TGoods(TButton(Sender).Tag).buyNum  
不过在需要注意的就是,当我们在释放Button1的时候,一定要记得先释放其Tag中存放的对象资源,以免内存泄漏。如:

if Assigned(goods) then goods.Free;

或者:

if Button1.Tag<>0 then TGoods(Button1.Tag).Free;

二、全局对象的创建

   全局对象在什么时候创建也是有讲究的,如果在调用之前尚未创建肯定会报错,那么下面通过调用函数间接调用全局对象的方法就不会有任何问题了。
[delphi] view plain copy  print?
var  
  FUserInfo: TUserInfo = nil;  
  
function UserInfo: TUserInfo;  
begin  
  if not Assigned(FUserInfo) then  
    FUserInfo := TUserInfo.Create;  
  Result := FUserInfo;  
end;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值