【问题标题】:Delphi XE2 static array assignment different on MacOS and WindowsDelphi XE2 静态数组分配在 MacOS 和 Windows 上不同
【发布时间】: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


    【解决方案1】:

    这似乎是 Mac OS 编译器中的一个错误。请您向Quality Central提交报告。

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 2011-12-29
      • 2012-02-25
      • 2019-09-09
      • 2023-01-14
      • 2021-12-17
      • 2020-09-18
      • 2012-03-24
      相关资源
      最近更新 更多