procedure Move( const Source; var Dest; count : Integer );
这是SYSTEM单元的一个函数,请问函数申明不定义传参的类型时,是什么意思,在什么情况下常用
这是SYSTEM单元的一个函数,请问函数申明不定义传参的类型时,是什么意思,在什么情况下常用
解决方案 »
- 一个关于指针的问题
- 關于DBGridEh運用問題
- IE 控件 如何 禁止弹出新窗口
- 请问出现:Illegal character in input file:($A1A1)属于什么错误?
- 紧急求助!DBDateTimeEditEh使用问题(不知道是不是Bug)
- TListView如何实现多列?
- 为什么ADO连不上SQL SERVER2000
- 学过C#,再学Deliphi好不好学?
- Delphi中字符串截取的函数是什么?比如说我要取字段String的第5个到第10个字段?
- DELPHI 开发微信支付
- 请问:当combobox下拉出来后,鼠标在其上上下游动时,发生什么事件呢?此时怎么得到光标所在的(选 项)的字符呢?
- 一个数据库查询的问题??
如:move(str1,str2,length(str1));
move(str1[1],str2[1],length(str1));
是一样的。就是说你可以传指针或者传变量名。move()它自动转换。
比如常用的SetLength过程,它的声明为:
procedure SetLength(var S; NewLength: Integer);
其中的S可以是字符串或是动态数组。
因此,当变量可以接受的类型不定时,可以使用无类型参数。
是在说我吗??
procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
var
Instance: TComponent;
begin
Instance := TComponent(InstanceClass.NewInstance);
TComponent(Reference) := Instance;
try
Instance.Create(Self);
except
TComponent(Reference) := nil;
raise;
end;
if (FMainForm = nil) and (Instance is TForm) then
begin
TForm(Instance).HandleNeeded;
FMainForm := TForm(Instance);
end;
end;由于动态连编(Dynamic binding)的原因,实际运行中,会根据
不同的类的类型(虚方法表 VMT)调用不同的构造函数,从而构造出不同的类的实例。
InstanceClass: TComponentClass; 作为参数传递进来,其实就可以把它看作是一个虚方法
表的指针,对 Instance.Create 的调用,其实就是在这个 VMT 中查找 Create 方法的地址,
然后调用这个地址处的 Create 方法。传入不同的类型(VMT),就能够调用不同的 Create 方法。
这就是 OO 方法 Dynamic binding 的实质!