没有参数类型的过程声明的行为是什么?

时间:2018-06-04 05:20:26

标签: function delphi

在尝试一些代码时,我发现如果我们为没有类型的函数或过程提供参数,它就不会给我们一个编译时错误。

为什么会发生这种情况,请提供一些解释,因为我无法在任何地方找到这样的代码?

程序声明:

Procedure TestProc(var objTest);

如果我们删除关键字var,则编译时错误显示为Type required

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:7)

当参数的实际类型无关时,通常使用

Untyped parameters。一个例子是标准" FillChar"用指定的字节值填充变量 - ANY变量的过程。不需要几个(实际上是无限数量的)重载过程就能够用值填充任意变量,而是使用无类型参数。

无类型参数(与任何其他参数一样)可以是"输入" (使用OUT前缀"输出"(数据进入过程/函数) (使用VAR前缀的数据来自过程/函数的数据)或两者(使用VAR前缀将数据发送到过程,修改并发回的数据。

您可能会注意到,FillChar过程使用OUT前缀,但OUT更正确。但是,FillChar程序已经创建了#34;一次,当CONST前缀不存在于该语言中时(仅VARVAR存在,而且在这两个中,VAR是唯一一个允许数据退出程序,因此使用了left:50px

答案 1 :(得分:-2)

就像维多利亚所说的那样是untyped parameter

如果要创建可以处理不同类型参数的过程或函数,则应使用overload。每当你调用一个重载函数时,它取决于你的Inpout将使用什么独占函数oder过程。