Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 不使用过程参数的名称访问过程参数_Delphi_Arguments_Delphi 10.2 Tokyo - Fatal编程技术网

Delphi 不使用过程参数的名称访问过程参数

Delphi 不使用过程参数的名称访问过程参数,delphi,arguments,delphi-10.2-tokyo,Delphi,Arguments,Delphi 10.2 Tokyo,我甚至不确定这是否可能,但我想我会问蜂巢思维 在Delphi中,我知道可以在表单的组件数组中循环,如果您不知道组件的名称(例如,在运行时创建的组件),可以“间接”访问组件 对于过程/函数的参数,是否可以使用相同的原则 基本上,我必须重构大量代码来记录传递给过程的值,我正试图找到一种方法来编写一些通用的代码,这些代码可以复制/粘贴到方法中,并且在参数列表更改时不必更新 例如,沿着以下路线: procedure SomeProcedure(a, b, c:String; i, j, k:Intege

我甚至不确定这是否可能,但我想我会问蜂巢思维

在Delphi中,我知道可以在表单的组件数组中循环,如果您不知道组件的名称(例如,在运行时创建的组件),可以“间接”访问组件

对于过程/函数的参数,是否可以使用相同的原则

基本上,我必须重构大量代码来记录传递给过程的值,我正试图找到一种方法来编写一些通用的代码,这些代码可以复制/粘贴到方法中,并且在参数列表更改时不必更新

例如,沿着以下路线:

procedure SomeProcedure(a, b, c:String; i, j, k:Integer);
var
     loopCounter:integer;
begin
     for loopCounter:=low(METHOD_ARGUMENTS???) to high(METHOD_ARGUMENTS???) do
     begin
          log.add(METHOD_ARGUMENTS[loopCounter].name, METHOD_ARGUMENTS[loopCounter].value);
     end;//for
end;//SomeProcedure
其中
METHOD\u ARGUMENTS
是通过传入的参数列表访问的“对象”

就像我说的,我甚至不确定这是否是一件事——但这肯定会让生活更轻松地向前发展


提前谢谢

没有编译器宏或任何东西可以访问第五个方法参数或类似的东西。对我来说,这也是一个错误的方法。如果要记录传递到方法中的参数,可以通过RTTI来完成,例如使用
TVirtualMethodInterceptor
。可能相关:Delphi RTL的某些部分通过使用一个类型为
array of const
的参数来模拟C的变量参数列表,该参数可归结为
array of TVarRec
。著名的
String.Format(..)
就是一个例子。@Günther The Beautiful-谢谢你的建议!我在处理类型(将属性/字段解析为特定格式等)时使用RTTI,这让我想到是否可以“访问过程参数5”-我不这么认为,谢谢您的确认!