2011-11-20 21 views
2

我正在更新一些現有的Delphi代碼,以使用Delphi XE2在MacOS上進行編譯。在MacOS和Windows上,Delphi XE2靜態數組賦值不同

安裝了Delphi XE2 Update 3。

在Win32和Win64上,代碼的某個特定位可以按預期工作,並且在使用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有關?

回答

1

這似乎是Mac OS編譯器中的一個錯誤。請你能提交一份報告給Quality Central