我在看Delphi:Char 和 TCharArray“不兼容类型”数组并开始尝试。我的发现相当有趣。
procedure Clear(AArray: array of Integer);
var
I: Integer;
begin
for I := Low(AArray) to High(AArray) do
AArray[I] := 0;
end;
var
MyArray: array of Integer;
begin
Clear(MyArray);
end.
这个简单的小示例展示了如何使用开放数组参数将动态数组传递给过程。它完全按照预期编译和运行。
procedure Clear(AArray: array of Char);
var
I: Integer;
begin
for I := Low(AArray) to High(AArray) do
AArray[I] := #0;
end;
var
MyArray: array of Char;
begin
Clear(MyArray);
end.
这是几乎相同的代码,唯一的区别是它使用了一个数组Char
而不是Integer
。它无法编译。相反,编译器会输出:
E2010 Incompatible types: 'Array' and 'Dynamic array'
为什么会这样呢?
搜索了一段时间后我发现this质量控制报告。我正在运行 Delphi 2009 并且它仍然在发生。
由于文档特别提到 Char 类型的开放数组参数与动态数组兼容,因此这应该是一个错误。从“打开数组参数”:
function Find(A: array of Char):
整数;
[...]
Note:[...] 这
前面的示例创建了一个函数
接受任何 Char 元素数组,
包括(但不限于)动态
数组。 [...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)