create newinstance请教 delphi中newinstance什么意思和create有什么异同??var form2:TForm2;begin form2.create; 与form2:=TForm2.create(nil) 有什么区别?????end; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NewInstance不会执行构造函数,只会分配对象内存。Create在执行的时候会先自动判断对象是否已分配内存,没有的话调用NewInstance来获取内存,然后再执行构造函数中的内容。 代码没什么好写的,就是那样。建议你找本介绍DELPHI对象机制的书看看,会更明白一点,或者自己跟踪下DELPHI的源代码。 NewInstance 是分配内存create 对象的执行范围 var aForm:TForm;begin aForm:=TForm(TFormClass.NewInstance); aForm.showmodal; aForm.Free; //这些代码好象 没有问题 那么如果说是NewInstance没有执行构造函数,只是分配内存空间 //这个怎么也可以?? //与下面的代码有什么区别 aForm:=TForm.Create(nil); aForm.showmodal; aForm.Free;end; 你覆盖下constructor,在里面加句showmessage就会看出区别了。 看 TApplication.CreateForm 代码 newInstance 与 create有所了解了还有一个问题TForm2.Create类的create函数与对象的create函数有什么区别???如:下面的例子,是对象的create函数var aForm2:TForm2;begin aForm2.Creat; ... .... 从使用的角度看var aFoo: TFoo;aFoo:=TFoo.Create 相当于 aFoo:=TFoo(TFoo.NewInstance).Create实际上constructor编译后的代码是这样:begin System._ClassCreate constructor中原来写的内容 AfterConstructionendSystem._ClassCreate 的原型是:function _ClassCreate(AClass: TClass; Alloc: Boolean): TObject;其中第二个参数 Alloc 决定在 _ClassCreate 中是否调用 AClass.NewInstance。当编译器看到 TFoo.Create 的时候,将会生成 TFoo.Create(True) 的代码;而 aFoo.Create 将生成 aFoo.Create(Boolean(-1)) 的代码 这个“题库与试卷系统”倒底怎样才能正确编译啊!请各位高手指教? 请问有谁做过可以有背景图片的Label控件? 各位帮忙:如何用OLE 控制word的页面设置 Delphi程序员薪水调查 请教下delphi中的record,在powerbuilder中是什么类型? 怎样在COMBOBOX中的下拉框中实现两列. 如果花了N长时间下载一个10M软件运行时却发现少了一个文件……谁能帮帮我??? 定时开机与关机的问题。 如何返回矩形内任意点的坐标! 如何用delphi实现,只删除指定文件夹内的文件,而不删除文件夹? 编译安装remobjects 源码版的时候提示 请教QQ截图原理
create 对象的执行范围
aForm:TForm;
begin
aForm:=TForm(TFormClass.NewInstance);
aForm.showmodal;
aForm.Free;
//这些代码好象 没有问题 那么如果说是NewInstance没有执行构造函数,只是分配内存空间
//这个怎么也可以?? //与下面的代码有什么区别
aForm:=TForm.Create(nil);
aForm.showmodal;
aForm.Free;
end;
TForm2.Create类的create函数
与对象的create函数有什么区别???
如:下面的例子,是对象的create函数
var
aForm2:TForm2;
begin
aForm2.Creat;
...
....
var aFoo: TFoo;
aFoo:=TFoo.Create 相当于 aFoo:=TFoo(TFoo.NewInstance).Create
实际上constructor编译后的代码是这样:
begin
System._ClassCreate
constructor中原来写的内容
AfterConstruction
endSystem._ClassCreate 的原型是:
function _ClassCreate(AClass: TClass; Alloc: Boolean): TObject;
其中第二个参数 Alloc 决定在 _ClassCreate 中是否调用 AClass.NewInstance。当编译器看到 TFoo.Create 的时候,将会生成 TFoo.Create(True) 的代码;而 aFoo.Create 将生成 aFoo.Create(Boolean(-1)) 的代码