Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi XE2静态数组分配在MacOS和Windows上不同_Delphi_Delphi Xe2 - Fatal编程技术网

Delphi XE2静态数组分配在MacOS和Windows上不同

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;

我目前正在更新一些现有的Delphi代码,以便使用Delphi XE2在MacOS上编译

已安装Delphi XE2更新3

在Win32和Win32 64上,特定的代码位按预期工作,并且在使用Delphi 4编译到Delphi XE时,它也按预期编译/运行

但是,在为MacOS编译时,同一段代码的工作方式不同。我们在Mac上也遇到过一些崩溃,但这可能是XE2调试器造成的

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。请你向我提交一份报告