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

A B*_*A B 3 delphi function

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

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

程序声明:

Procedure TestProc(var objTest);
Run Code Online (Sandbox Code Playgroud)

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

有人可以解释一下吗?

Hea*_*are 7

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

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

正如您可能注意到的那样,FillChar过程使用VAR前缀,尽管OUT更正确.然而,FillChar程序"创建"的时间,当OUT前缀没有在语言存在(仅CONSTVAR存在,以及两者的,VAR是允许的数据要回去了程序的只有一个,所以VAR是用过的).