2017-01-27 23 views
1

저는 Delphi 2007 응용 프로그램을 Delphi 10으로 변환하려고합니다. 2007 버전의 소프트웨어에서는 TFormatSettings 상수를 사용합니다. 그 사이에 TFormatSettings 타입이 바뀌었기 때문에 다음과 같은 문제가 발생했습니다 : TFormatSettings 상수는 어떻게 정의합니까?TFormatSettings 상수를 정의하는 방법 (Delphi 10)

XML_FormatSettings : TFormatSettings = (
    CurrencyString:   '€'; 
    CurrencyFormat:   3; 
    CurrencyDecimals:   2; 
    DateSeparator:    '-'; 
    TimeSeparator:    ':'; 
    ListSeparator:    ';'; 
    ShortDateFormat:   'yyyy-MM-dd'; 
    LongDateFormat:   'dddd, d. MMMM yyyy'; 
    TimeAMString:    ''; 
    TimePMString:    ''; 
    ShortTimeFormat:   'hh:nn:ss'; 
    LongTimeFormat:   'hh:nn:ss'; 
    ShortMonthNames:   ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); 
    LongMonthNames:   ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'Augut', 'September', 'October', 'November', 'December'); 
    ShortDayNames:    ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); 
    LongDayNames:    ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); 
    EraInfo:     (
     EraName: '';    // <= Error here 
     EraOffset: 0; 
     EraStart: 0; 
     EraEnd: 0;); 
    ThousandSeparator:   ','; 
    DecimalSeparator:   '.'; 
    TwoDigitYearCenturyWindow: 0; 
    NegCurrFormat:    8; 
    NormalizedLocaleName:  '';); 

이 다음과 같은 오류를 제공합니다 : 선언되지 않은 식별자를 : 나는 여러 가지 다른 방법을 시도했지만 해결책을 찾지 못했습니다

'EraName를'나는 다음 시도했다. TFormatSettings의 상수를 정의 할 수 있습니까? 상수를 선언 할 때 레코드 유형에 정의되고 사용되는 레코드 유형을 어떻게 처리합니까?

+1

'FS : = TFormatSettings.Create ('en-US');와 같은 특정 로케일로 미리 정의 할 수 있습니다 (또는 필요한 것을 변경). –

+0

고마워,하지만 변수가 아니라 상수를 정의하고 싶습니다. 이것은 나의 마지막 구조 (종류) 일 것입니다. –

+1

당신은 그것을 상수로 정의 할 수 없다고 생각합니다. 'EraInfo'는 레코드의 동적 배열로 선언되어 있습니다. 그리고 나는 그것을 일정한 레코드에서 선언 할 방법을 전혀 모르고 있습니다. –

답변

3

EraInfo은 동적 레코드 배열이며 상수 동적 레코드 배열을 정의 할 수 없습니다. EraInfo가 필요하지 않은 경우 , 그냥 선언을 생략 :

XML_FormatSettings : TFormatSettings = (
    CurrencyString:   '€'; 
    CurrencyFormat:   3; 
    CurrencyDecimals:   2; 
    DateSeparator:    '-'; 
    TimeSeparator:    ':'; 
    ListSeparator:    ';'; 
    ShortDateFormat:   'yyyy-MM-dd'; 
    LongDateFormat:   'dddd, d. MMMM yyyy'; 
    TimeAMString:    ''; 
    TimePMString:    ''; 
    ShortTimeFormat:   'hh:nn:ss'; 
    LongTimeFormat:   'hh:nn:ss'; 
    ShortMonthNames:   ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); 
    LongMonthNames:   ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'Augut', 'September', 'October', 'November', 'December'); 
    ShortDayNames:    ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); 
    LongDayNames:    ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); 
    ThousandSeparator:   ','; 
    DecimalSeparator:   '.'; 
    TwoDigitYearCenturyWindow: 0; 
    NegCurrFormat:    8; 
    NormalizedLocaleName:  ''); 

생략 필드는 자신의 유형에 따라 0이거나 전무 할 것이다.