gpt4 book ai didi

delphi - 如何处理 TControls 的开放数组

转载 作者:行者123 更新时间:2023-12-03 18:16:18 25 4
gpt4 key购买 nike

我有这段代码无法编译:

function IsControlOneOf(AControl: TControl; AControls: array of TControl): Boolean;
begin
Result := False;
// if AControls <> nil then // does not compile!
if Length(AControls) <> 0 then // this compiles
Result := AControl in AControls; // does not compile!
end;

我可能把动态数组误认为是开放数组。
如何测试 “AControls 中的 AControl”?我应该将 Low(AControls) 迭代到 High(AControls) 并测试匹配,还是什么?

另外,有没有办法为开放数组设置一个默认值?

AControls: array of TControl = []

也不编译。

最佳答案

in 运算符与集合一起使用。您不能使用它来测试元素是否存在于开放数组参数中。事实上,您永远不能使用 in 来测试元素是否是任何类型数组的成员。您将需要遍历数组并检查每个元素。

预计您不能将开放数组参数与 nil 进行比较。请记住,开放数组与动态数组不同,无论它们的语法看起来多么相似。

最后,我建议大家不要按值传递开放数组参数。这导致正在制作阵列的副本,这对于大型阵列来说当然是昂贵的,更不用说不必要的了。将开放数组参数声明为 const。


在您的问题编辑中,您询问了默认参数。您不能为开放数组参数指定默认值。因此,为了获得所需的灵 active ,您将不得不改用重载过程。

关于delphi - 如何处理 TControls 的开放数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com