문제

나는 표준 Delphi 상수 Daymonday 등을 사용하고 있으며 현지화 된 문자열 (예 : "Lundi")으로 변환하고 싶습니다. 간단한 RTL 또는 VCL 호출이 있습니까?

도움이 되었습니까?

해결책 2

생각 "현재 로케일"에 대한 간단한 방법을 찾았습니다.

System.pas에 정의 된 글로벌 배열 LongdayNames [] 및 ShortDayNames []가 있습니다.

그래서..

  Label.Text = LongDayName[DayMonday];

예를 들어 작동해야합니다. "일요일"을 반환하는 것을 제외하고. Delphi는 내부적으로 이틀의 번호 지정 체계를 지원하고 Daymonday는 ISO8601 Constant 1이며 LongdayName 배열은 일요일이 일주일의 첫날로 기대하기 때문입니다. C ++ 빌더는 문자열 배열이 하나가 아닌 0에서 시작하기 때문에 물건을 더 혼동합니다.

다른 팁

다음과 같이 다른 로케일 설정을 얻을 수 있습니다.

var
  fs : TFormatSettings;
  x  : string;
begin
  GetLocaleFormatSettings(GetThreadlocale, fs);
  x:= FormatDateTime('%mmmm', Now, fs);
  // etc..
end;

GetThreadLocale은 현재 LCID를 제공하지만 다른 번호를 직접 사용할 수 있습니다.

tformatsettings 레코드 :

TFormatSettings = record
  CurrencyFormat: Byte;
  NegCurrFormat: Byte;
  ThousandSeparator: Char;
  DecimalSeparator: Char;
  CurrencyDecimals: Byte;
  DateSeparator: Char;
  TimeSeparator: Char;
  ListSeparator: Char;
  CurrencyString: string;
  ShortDateFormat: string;
  LongDateFormat: string;
  TimeAMString: string;
  TimePMString: string;
  ShortTimeFormat: string;
  LongTimeFormat: string;
  ShortMonthNames: array[1..12] of string;
  LongMonthNames: array[1..12] of string;
  ShortDayNames: array[1..7] of string;
  LongDayNames: array[1..7] of string;
  TwoDigitYearCenturyWindow: Word;
end;

또한보십시오 http://www.microsoft.com/globaldev/reference/lcid-all.mspx 전체 목록.

형식 세트를 직접 변경하여 정말 멋진 결과를 만들 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top