Назначение статического массива Delphi XE2 разное в MacOS и Windows - PullRequest
2 голосов
/ 20 ноября 2011

В настоящее время я обновляю некоторый существующий код 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?

1 Ответ

1 голос
/ 21 ноября 2011

Это может показаться ошибкой в ​​компиляторе Mac OS. Пожалуйста, вы можете отправить отчет в Quality Central .

...