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

Function 没有参数类型的过程声明的行为是什么?,function,delphi,Function,Delphi,在尝试一些代码时,我发现如果我们为没有类型的函数或过程提供参数,它不会给我们一个编译时错误 为什么会发生这种情况,请给出一些解释,因为我在任何地方都找不到这样的代码 程序声明: Procedure TestProc(var objTest); 如果我们删除关键字var,则编译时错误显示为Type required 谁能解释一下吗?就像维多利亚说的那样,这是一个 如果要创建可以处理不同类型参数的过程或函数,应使用。每次调用重载函数时,它取决于输入输出将使用什么独占函数或过程。通常在参数的实际类型

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

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

程序声明:

Procedure TestProc(var objTest);
如果我们删除关键字
var
,则编译时错误显示为
Type required


谁能解释一下吗?

就像维多利亚说的那样,这是一个

如果要创建可以处理不同类型参数的过程或函数,应使用。每次调用重载函数时,它取决于输入输出将使用什么独占函数或过程。

通常在参数的实际类型不相关时使用。一个例子是用指定的字节值填充变量(任何变量)的标准“”过程。不需要几个(实际上是无限多个)重载过程才能用值填充任意变量,而是使用非类型化参数

非类型化参数(和任何其他参数一样)可以使用
CONST
前缀“输入”(进入过程/函数的数据),也可以使用
OUT
前缀“输出”(来自过程/函数的数据),或者两者都可以(发送到过程、修改和发回的数据)通过使用
VAR
前缀


正如您可能注意到的,FillChar过程使用
VAR
前缀,尽管
OUT
更为正确。然而,FillChar过程是在
OUT
前缀在语言中不存在的时候“创建”的(只有
CONST
VAR
存在,在这两个过程中,
VAR
是唯一允许数据从过程返回的过程,因此使用了
VAR
).

这是一个。它主要是语法上的糖分,相当于传递一个指针。额外的功能是const untyped parameters,它不能用指针来模拟。像FillChar、Move等。尝试使用带重载的类型化参数编写这些函数。