Delphi XE2静态数组分配在MacOS和Windows上不同
我目前正在更新一些现有的Delphi代码,以便使用Delphi XE2在MacOS上编译 已安装Delphi XE2更新3 在Win32和Win32 64上,特定的代码位按预期工作,并且在使用Delphi 4编译到Delphi XE时,它也按预期编译/运行 但是,在为MacOS编译时,同一段代码的工作方式不同。我们在Mac上也遇到过一些崩溃,但这可能是XE2调试器造成的Delphi XE2静态数组分配在MacOS和Windows上不同,delphi,delphi-xe2,Delphi,Delphi Xe2,我目前正在更新一些现有的Delphi代码,以便使用Delphi XE2在MacOS上编译 已安装Delphi XE2更新3 在Win32和Win32 64上,特定的代码位按预期工作,并且在使用Delphi 4编译到Delphi XE时,它也按预期编译/运行 但是,在为MacOS编译时,同一段代码的工作方式不同。我们在Mac上也遇到过一些崩溃,但这可能是XE2调试器造成的 type TFixedSizeAnsiStringArray = array[0..255] of AnsiString;
type
TFixedSizeAnsiStringArray = array[0..255] of AnsiString;
procedure TForm1.Button1Click(Sender: TObject);
var
FirstArray: TFixedSizeAnsiStringArray;
SecondArray: TFixedSizeAnsiStringArray;
begin
FirstArray[0] := 'Apple';
FirstArray[1] := 'Banana';
FirstArray[2] := 'Pineapple';
// ...
SecondArray := FirstArray;
Memo1.Lines.Add(SecondArray[0]);
Memo1.Lines.Add(SecondArray[1]);
// ....
end;
在Windows上,SecondArray的所有元素都与FirstArray的元素相同
但是在MacOS上(当它运行时),只有SecondArray的第一个元素具有正确的值
使用for
循环很容易修复,但了解Windows和MacOS之间的不同之处是很好的
可能与AnsiString的使用有关?这似乎是Mac OS编译器中的一个bug。请你向我提交一份报告