2011-11-20 1 views
2

현재 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을 사용하는 것과 관련이 있을까요?

답변

1

이것은 Mac OS 컴파일러의 버그로 보입니다. Quality Central에게 신고 해주십시오.