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