Ana*_*oge 3 arrays delphi types char
我在下面的评论中遇到过几次"不兼容类型"错误,并且从未对Delphi 2007中没有直接支持的原因感到满意:
program Project1; {$APPTYPE CONSOLE}
type TCharArray = array of Char;
procedure DoArray(Chars: array of Char);
begin
end;
function ReturnTCharArray: TCharArray;
var CharArray: TCharArray;
begin
Result := CharArray;
end;
begin
DoArray(ReturnTCharArray); // [DCC Error] Project1.dpr(18): E2010 Incompatible types: 'Array' and 'TCharArray'
end.
Run Code Online (Sandbox Code Playgroud)
是不是可以将数组类型"别名"为另一个彼此兼容的数组类型?假设我无法更改DoArray的声明(它是第三方库的一部分),我如何编写一个返回与DoArray的param兼容的char数组的函数?直截了当的"函数ReturnAChar:Char数组;" 导致"标识符预期但发现'ARRAY'"错误.我甚至尝试将返回数组的函数更改为带有var"array of char"pram的过程,但是这也不允许在过程中设置"Char数组"参数的长度("Constant对象不能传递作为var参数").
这实际上可能是编译器错误(或从未正确记录的限制).我做了一些实验,发现你可以将一个动态数组(无论是否打字)传递给一个期望几乎所有类型的开放数组的过程......除了Char和WideChar.
当参数类型是Char的打开数组时,请参阅是否允许动态Char数组?有关问题的描述和可能的解决方法.