【发布时间】:2017-01-27 03:29:34
【问题描述】:
我假设我的问题可能已经存在于 SO 知识库中,但我只是找不到它。在这种情况下,请引导我到原点并投票关闭这个作为重复。 它是关于将数组参数传递给过程。
以下案例简单、直观且有效:
procedure MyProc(const A: array of ShortString);
begin
//
end
现在我可以调用MyProc 并直接将字符串传递给它:
MyProc(['no', 'trump', 'please']);
现在如果我声明一个 ShortString 类型的数组呢?
type
TMyArray = array of ShortString;
procedure MyProc(const A: TMyArray);
begin
//
end
有没有办法直接执行MyProc传参数组类型? IE。使用与上述相同的过程调用。
+奖金问题:
type TMyRecord = record
param, value: ShortString
end;
procedure MyProc(const R: TMyRecord);
begin
//
end
是否有任何技术可以调用过程并传递类型记录的值?类似(伪代码):
MyProc((TMyRecord.param='aaa', TMyRecord.value='bbb'));
我问的原因:我不想声明一个变量并设置它。相反,我想直接将数组/记录值作为过程参数传递。
【问题讨论】:
-
开放数组参数和动态数组是有区别的,尽管它们的语法非常相似。 my article about this 中的更多内容。只有当您删除创建它们的函数时,才能以这种方式传递记录
-
如果你需要调试它,你会希望你声明一个变量并设置它......
-
一个问题也请一次。为什么要使用短字符串?
-
@David Heffernan,我使用 Delphi 10.1 Berlin,它有一个已知问题 (RSP-14914):如果您声明
array of stringCode Insight 停止运行。对于这个特定示例,我使用了不停止显示的短字符串。 -
走错了。现在您不支持 Unicode,性能会受到影响。不用担心代码洞察力。
标签: arrays delphi syntax parameter-passing