在尝试一些代码时,我发现如果我们为没有类型的函数或过程提供参数,它就不会给我们一个编译时错误。
为什么会发生这种情况,请提供一些解释,因为我无法在任何地方找到这样的代码?
程序声明:
Procedure TestProc(var objTest);
如果我们删除关键字var
,则编译时错误显示为Type required
。
有人可以解释一下吗?
答案 0 :(得分:7)
Untyped parameters。一个例子是标准" FillChar"用指定的字节值填充变量 - ANY变量的过程。不需要几个(实际上是无限数量的)重载过程就能够用值填充任意变量,而是使用无类型参数。
无类型参数(与任何其他参数一样)可以是"输入" (使用OUT
前缀"输出"(数据进入过程/函数) (使用VAR
前缀的数据来自过程/函数的数据)或两者(使用VAR
前缀将数据发送到过程,修改并发回的数据。
您可能会注意到,FillChar过程使用OUT
前缀,但OUT
更正确。但是,FillChar程序已经创建了#34;一次,当CONST
前缀不存在于该语言中时(仅VAR
和VAR
存在,而且在这两个中,VAR
是唯一一个允许数据退出程序,因此使用了left:50px
。
答案 1 :(得分:-2)
就像维多利亚所说的那样是untyped parameter
如果要创建可以处理不同类型参数的过程或函数,则应使用overload。每当你调用一个重载函数时,它取决于你的Inpout将使用什么独占函数oder过程。