在Delphi 7或Delphi XE下编译时,下面的代码会抱怨
[DCC Error] Project1.dpr(25): E2010 Incompatible types: 'array of Char' and 'TAChar'
According to Rudy’s article,应该允许传入类型数组来打开数组吗?
此外,为什么它不抱怨’布尔’数组和’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.
解决方法
问题中的代码是有效的.任何拒绝编译它的编译器都是有缺陷的.可能没有必要提交错误报告,因为现代版本将编译此代码.
如果您无法转移到没有缺陷的编译器,那么您将不得不解决该缺陷. Sertac对类似问题的回答表明了一个这样的工作:https://stackoverflow.com/a/3781425/505088