如何从integer变量(由integer(@object)得到)返回对象 var i:integer; et:tedit;begin et:=tedit.create(nil); i:=integer(@et);end;以后如何通过i值得到et对象的引用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TForm1.Button1Click(Sender: TObject);var i:integer; et:tedit;begin et:=tedit.create(nil); et.Text := 'abc'; i:=integer(et); ShowMessage(TEdit(i).Text); et.Free;end; procedure TForm1.Button1Click(Sender: TObject);var i:integer; et:tedit;begin et:=tedit.create(nil); et.Text := 'abc'; i:=integer(@et); //如果是这样 ShowMessage(TEdit(Pointer(i)^).Text); //这里就这样取 et.Free;end; 我在程序中使用第一种方式 i:=integer(et); 正常而使用第二种方式 i:=integer(@et); 在返回对象时出现非法访问我的使用过程如下procedure TForm1.Button1Click(Sender: TObject);var et:TEdit;begin et:=TEdit.Create(nil); et.Text:='123'; Tag:=integer(@et); //如果是这样end;procedure TForm1.Button2Click(Sender: TObject);begin ShowMessage(TEdit(Pointer(tag)^).Text); //出错!!!!end;把et的定义改为全局变量就ok了,即var et:TEdit;procedure TForm1.Button1Click(Sender: TObject);begin et:=TEdit.Create(nil); et.Text:='123'; Tag:=integer(@et); //如果是这样end;procedure TForm1.Button2Click(Sender: TObject);begin ShowMessage(TEdit(Pointer(tag)^).Text); //okend;终于明白了 integer(et) 返回的是对象的地址 integer(@et)返回的是et变量名的地址(对象引用的地址)chenzhuo(睡到自然醒):不知我说的对否??谢过 奇怪,我明明给了 chenzhuo(睡到自然醒) 20分,怎么会是0 分但是点击管理后,显示了已经给了chenzhuo(睡到自然醒) 20分,系统出错了 关于正则表达式的双引号问题 用IdTCPserver控件 监听端口 获取地址栏信息 奇怪的故障 为什么Locate用了没反应?------- 一个语法错误,不知道怎么改?帮忙呀? 求一段加密解密字符串代码 如何在多个combobox控件之间用回车键和上下箭头键进行切换 请教PChar函数的用法 进销存中的模糊查找 求助 delphi中鼠标拖动的事件是什么,怎么使用? delphi中让窗体不让出现放大按钮,怎样实现?
var
i:integer;
et:tedit;
begin
et:=tedit.create(nil);
et.Text := 'abc';
i:=integer(et);
ShowMessage(TEdit(i).Text);
et.Free;end;
var
i:integer;
et:tedit;
begin
et:=tedit.create(nil);
et.Text := 'abc';
i:=integer(@et); //如果是这样
ShowMessage(TEdit(Pointer(i)^).Text); //这里就这样取
et.Free;end;
而使用第二种方式 i:=integer(@et); 在返回对象时出现非法访问我的使用过程如下
procedure TForm1.Button1Click(Sender: TObject);
var
et:TEdit;
begin
et:=TEdit.Create(nil);
et.Text:='123';
Tag:=integer(@et); //如果是这样
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(TEdit(Pointer(tag)^).Text); //出错!!!!
end;把et的定义改为全局变量就ok了,即
var
et:TEdit;procedure TForm1.Button1Click(Sender: TObject);
begin
et:=TEdit.Create(nil);
et.Text:='123';
Tag:=integer(@et); //如果是这样
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(TEdit(Pointer(tag)^).Text); //ok
end;终于明白了
integer(et) 返回的是对象的地址
integer(@et)返回的是et变量名的地址(对象引用的地址)chenzhuo(睡到自然醒):不知我说的对否??谢过