현재 Delphi XE2를 사용하여 MacOS에서 컴파일 할 수있는 기존 Delphi 코드를 일부 업데이트하고 있습니다.MacOS 및 Windows에서 Delphi XE2 정적 배열 지정
델파이 XE2 업데이트 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을 사용하는 것과 관련이 있을까요?