把一个Integer类型的变量转换为TObject之后,用不用释放,怎么释放? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不用.不过还是想问问楼主所说的把INTEGER类型转成TOBJECT是什么意思..嘿嘿 是这样的,我想把一个Integer值保存到ComboBox里面,但是这个控件的AddObject方法只接受TObject对象,于是我就把Integer转换为TObject了。 楼主是不是用的delphi.net???来错分区了???据我的了解 在delphi.net以前的版本中好像不存在 能把integer 转换为 tobject这种事首先integer就不是一个类——这和java 以及.net不同如果楼主说的是.net 里的 ,Integer转换为TObject当然不用自己释放,java也是如此 这里只是记录一个指针,释放问题与它无关,指针传递自然没理由报错~~~但有另一个严重问题,对象是存在堆上的,VCL对象不手动释放,就一直存在,所以可以这里可以这么用.而Integer呢?我相信你不是给它动态分配在堆上吧?那它就在栈上,栈的概念有吧?下一次指针指向的Integer类型数据就不是同一个,上次那个已经释放了,所以不要这么做. 比如:A:Tobject;B:integer;.......A:=Tobject.create;....b:=integer(a);.....以后你可以A.free,也可以Tobject(B).free;但只能释放一次。 这样用没有多大问题的...比如:var a:TObject; b:integer;begin... 其中a本身,也仅是四字节的整型,只是它将会用于存地址而已.强制转换后,把它当成整型数用没有什么不行的. 比如:A:Tobject;B:integer;.......A:=Tobject.create;....b:=integer(a);.....以后你可以A.free,也可以Tobject(B).free;但只能释放一次。--------------------------------------------------靠,原来说的这种转换阿这样做有意义吗?a和b实际在内存中都是32位整数,说穿了就是指针,a转成b 不过是个内存地址的数字,这还可以用来显示但b转成a呢,在这里毫无意义我还以为将整数转成tobject以后仍然是个整数呢 楼主这个"把INTEGER类型转成TOBJECT"这个说法不对实际只是把integer类型转成tobject类型的指针,32位整数转32位整数当然是可以的如果楼主只是想保存这个整数到只接受tobject类型参数的对象里 将integer转成tobject类型的指针是可以的用的时候再转回来还是原来的数字,不用释放,那个对象也不过是存放一个指针而已,事实上等于可以存放任何东西。整数可以直接存放,其他的东西可以将它们的指针存放进去 TObject本质上就是个指向对象实例的指针,指针么,和整数当然是可以来回转换的,就是当Integer穿着TObject的马甲的时候千万别访问它的成员,因为那其实是个不一定指向哪的指针,根本没有给它分配内存,后果……这回你说那个TObject用释放么? "是这样的,我想把一个Integer值保存到ComboBox里面,但是这个控件的AddObject方法只接受TObject对象,于是我就把Integer转换为TObject了。"行的,用完之后步用释放! 已有DC设备句柄,如何从图片文件画图? 过大年大散分-2 idhttp.post(url,param)参数问题 delphi数据库客户端软件如何获知数据库更新? 求助,delphi运行出错. 怎样在 UPDATE语言中改变Blob字段的数据? 编译能通过..为何运行时出错? 地址访问的问题. 晕,这里有没有做通信接口的 今天的MSN Title 如何设置font默认为gb2312 如何在游戏界面中模拟文本编辑(输入)框? stringgrid 中数据显示!!!
不过还是想问问楼主所说的把INTEGER类型转成TOBJECT是什么意思..嘿嘿
来错分区了???
据我的了解 在delphi.net以前的版本中好像不存在 能把integer 转换为 tobject这种事
首先integer就不是一个类——这和java 以及.net不同如果楼主说的是.net 里的 ,Integer转换为TObject当然不用自己释放,java也是如此
A:Tobject;
B:integer;
.......
A:=Tobject.create;
....
b:=integer(a);
.....
以后
你可以A.free,也可以Tobject(B).free;但只能释放一次。
比如:
var
a:TObject;
b:integer;
begin
...
其中a本身,也仅是四字节的整型,只是它将会用于存地址而已.
强制转换后,把它当成整型数用没有什么不行的.
A:Tobject;
B:integer;
.......
A:=Tobject.create;
....
b:=integer(a);
.....
以后
你可以A.free,也可以Tobject(B).free;但只能释放一次。
--------------------------------------------------
靠,原来说的这种转换阿
这样做有意义吗?a和b实际在内存中都是32位整数,说穿了就是指针,a转成b 不过是个内存地址的数字,这还可以用来显示
但b转成a呢,在这里毫无意义
我还以为将整数转成tobject以后仍然是个整数呢
实际只是把integer类型转成tobject类型的指针,32位整数转32位整数当然是可以的
如果楼主只是想保存这个整数到只接受tobject类型参数的对象里 将integer转成tobject类型的指针是可以的
用的时候再转回来还是原来的数字,不用释放,那个对象也不过是存放一个指针而已,事实上等于可以存放任何东西。整数可以直接存放,其他的东西可以将它们的指针存放进去
这回你说那个TObject用释放么?