【发布时间】:2012-01-02 11:18:04
【问题描述】:
我目前正在更新一些现有的 Delphi 代码,以便在 MacOS 上使用 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 的使用有关?
【问题讨论】:
标签: delphi delphi-xe2