只有一个原则:类型匹配
作为参数的函数的返回结果,必须与调用函数所要求的参数的类型相匹配.
例:FileExist(OpenDialog.Filename);
function FileExists(const FileName: string): Boolean;
要求string类型为参数.
OpenDialog的FileName属性
roperty FileName: TFileName;
TfileName的类型:TFileName = string;
所以类型匹配,可以调用.
另一个在Delphi中的特殊的东西是:类的属性中的有Default特性的属性.
这种情况是导致程序不好理解的一种情况.
举例来说
主要讲原理,略去无关的东西)
TStrings = class(TPersistent)
private
......
protected
......
public
......
property Strings[Index: Integer]: string read Get write Put;
Default;//注意这个Defalut
......
end;
一般情况我们使用Tstrings是这样用的:
s:=n.strings[0];
上面:s 为string,n为Tstrings
由于strings属性是Tstrings的Default属性,所以我们也可以这样用:
s:=n[0];
一般情况下就容易看不懂,应为n 为Tstring,s 为string两者的类型是
不兼容的,但实际上,n[0]表示n.strings[0]是string,所以两者类型兼容.
注意类的Default属性有且只有一个.