6

在 Delphi 7 或 Delphi XE 下编译时,下面的代码会报错

[DCC Error] Project1.dpr(25): E2010 Incompatible types: 'array of Char' and 'TAChar'

根据Rudy的文章,应该允许将类型化数组传递给开放数组吗?

此外,为什么它不抱怨 'array of Boolean' 和 'TABoolean' ?

非常感谢您的帮助!

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAChar = array of Char;
  TABoolean = array of Boolean;

procedure Test1(const CharArr: array of Char);
begin
end;

procedure Test2(const BoolArr: array of Boolean);
begin
end;

var
  Arr1: TAChar;
  Arr2: TABoolean;
begin
  try
    Test1(Arr1);  //  <------- Does not compile in Delphi 7 & XE
    Test2(Arr2);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
4

1 回答 1

6

问题中的代码是有效的。任何拒绝编译它的编译器都是有缺陷的。提交错误报告可能没什么意义,因为现代版本将编译此代码。

如果您无法迁移到没有缺陷的编译器,那么您将不得不解决该缺陷。Sertac 对类似问题的回答展示了一种这样的解决方法:https ://stackoverflow.com/a/3781425/505088

于 2015-12-30T14:12:37.337 回答