2017-01-27 11 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:  ''); 

Опущенные поля будет ноль или ноль, в зависимости от их типа.