mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 09:39:25 +02:00
* First era patch of Taka_JP.
git-svn-id: trunk@15775 -
This commit is contained in:
parent
1e7e80bfb3
commit
2d8ac256cf
@ -50,6 +50,13 @@ Var
|
||||
Win32BuildNumber : dword;
|
||||
Win32CSDVersion : ShortString; // CSD record is 128 bytes only?
|
||||
|
||||
const
|
||||
MaxEraCount = 7;
|
||||
|
||||
var
|
||||
EraNames: array [1..MaxEraCount] of String;
|
||||
EraYearOffsets: array [1..MaxEraCount] of Integer;
|
||||
|
||||
{ Compatibility with Delphi }
|
||||
function Win32Check(res:boolean):boolean;inline;
|
||||
function WinCheck(res:boolean):boolean;
|
||||
@ -651,6 +658,70 @@ Begin
|
||||
Result:=Def;
|
||||
End;
|
||||
|
||||
function EnumEraNames(Names: PChar): WINBOOL; stdcall;
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
Result := False;
|
||||
for i := Low(EraNames) to High(EraNames) do
|
||||
if (EraNames[i] = '') then
|
||||
begin
|
||||
EraNames[i] := Names;
|
||||
Result := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
function EnumEraYearOffsets(YearOffsets: PChar): WINBOOL; stdcall;
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
Result := False;
|
||||
for i := Low(EraYearOffsets) to High(EraYearOffsets) do
|
||||
if (EraYearOffsets[i] = -1) then
|
||||
begin
|
||||
EraYearOffsets[i] := StrToIntDef(YearOffsets, 0);
|
||||
Result := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure GetEraNamesAndYearOffsets;
|
||||
var
|
||||
ACALID : CALID;
|
||||
ALCID : LCID;
|
||||
buf : array[0..10] of char;
|
||||
i : integer;
|
||||
begin
|
||||
for i:= 1 to MaxEraCount do
|
||||
begin
|
||||
EraNames[i] := ''; EraYearOffsets[i] := -1;
|
||||
end;
|
||||
ALCID := GetThreadLocale;
|
||||
if GetLocaleInfo(ALCID , LOCALE_IOPTIONALCALENDAR, buf, sizeof(buf)) <= 0 then exit;
|
||||
ACALID := StrToIntDef(buf,1);
|
||||
|
||||
if ACALID in [3..5] then
|
||||
begin
|
||||
EnumCalendarInfoA(@EnumEraNames, ALCID, ACALID , CAL_SERASTRING);
|
||||
EnumCalendarInfoA(@EnumEraYearOffsets, ALCID, ACALID, CAL_IYEAROFFSETRANGE);
|
||||
end;
|
||||
(*
|
||||
1 CAL_GREGORIAN Gregorian (localized)
|
||||
2 CAL_GREGORIAN_US Gregorian (English strings always)
|
||||
3 CAL_JAPAN Japanese Emperor Era
|
||||
4 CAL_TAIWAN Taiwan Calendar
|
||||
5 CAL_KOREA Korean Tangun Era
|
||||
6 CAL_HIJRI Hijri (Arabic Lunar)
|
||||
7 CAL_THAI Thai
|
||||
8 CAL_HEBREW Hebrew (Lunar)
|
||||
9 CAL_GREGORIAN_ME_FRENCH Gregorian Middle East French
|
||||
10 CAL_GREGORIAN_ARABIC Gregorian Arabic
|
||||
11 CAL_GREGORIAN_XLIT_ENGLISH Gregorian transliterated English
|
||||
12 CAL_GREGORIAN_XLIT_FRENCH Gregorian transliterated French
|
||||
23 CAL_UMALQURA Windows Vista or later: Um Al Qura (Arabic lunar) calendar
|
||||
*)
|
||||
end;
|
||||
|
||||
procedure GetLocaleFormatSettings(LCID: Integer; var FormatSettings: TFormatSettings);
|
||||
var
|
||||
@ -744,6 +815,7 @@ begin
|
||||
|
||||
Set8087CW(old8087CW);
|
||||
GetFormatSettings;
|
||||
if SysLocale.FarEast then GetEraNamesAndYearOffsets;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user