Difference between revisions of "Unit Locale"
(7 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '''Ultibo Locale | + | '''Ultibo Locale Interface unit''' |
This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL. | This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL. | ||
Line 66: | Line 66: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Default code page | + | <div style="font-size: 14px; padding-left: 12px;">'''Default code page''' <code> CP_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 94: | Line 94: | ||
| <code>CP_UNICODE = 1200;</code> | | <code>CP_UNICODE = 1200;</code> | ||
| Unicode translation | | Unicode translation | ||
+ | |- | ||
+ | | <code>CP_UTF16_BE = 1201;</code> | ||
+ | | UTF-16 (unicodeFFFE) translation | ||
|- | |- | ||
| <code>CP_UTF7 = 65000;</code> | | <code>CP_UTF7 = 65000;</code> | ||
Line 105: | Line 108: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Code page identifier | + | <div style="font-size: 14px; padding-left: 12px;">'''Code page identifier''' <code> CP_OEM_*, CP_ANSI_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 182: | Line 185: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Default locale | + | <div style="font-size: 14px; padding-left: 12px;">'''Default locale''' <code> LOCALE_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 196: | Line 199: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''String length maximum | + | <div style="font-size: 14px; padding-left: 12px;">'''String length maximum''' <code> MAX_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 210: | Line 213: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''MBCS and Unicode translation flag | + | <div style="font-size: 14px; padding-left: 12px;">'''MBCS and Unicode translation flag''' <code> MB_*, WC_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 238: | Line 241: | ||
|- | |- | ||
| <code>WC_DEFAULTCHAR = $00000040;</code> | | <code>WC_DEFAULTCHAR = $00000040;</code> | ||
− | | replace w/ default AnsiChar | + | | replace w/default AnsiChar |
|- | |- | ||
|colspan="2"| | |colspan="2"| | ||
Line 249: | Line 252: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Character type flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Character type flag''' <code> CT_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 266: | Line 269: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''CType 1 flag bit | + | <div style="font-size: 14px; padding-left: 12px;">'''CType 1 flag bit''' <code> C1_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 304: | Line 307: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''CType 2 flag bit | + | <div style="font-size: 14px; padding-left: 12px;">'''CType 2 flag bit''' <code> C2_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 354: | Line 357: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''CType 3 flag bit | + | <div style="font-size: 14px; padding-left: 12px;">'''CType 3 flag bit''' <code> C3_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 407: | Line 410: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''String flag | + | <div style="font-size: 14px; padding-left: 12px;">'''String flag''' <code> NORM_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 432: | Line 435: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Locale independent mapping flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Locale independent mapping flag''' <code> MAP_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 457: | Line 460: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Locale dependent mapping flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Locale dependent mapping flag''' <code> LCMAP_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 504: | Line 507: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Language group enumeration flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Language group enumeration flag''' <code> LGRPID_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 518: | Line 521: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Locale enumeration flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Locale enumeration flag''' <code> LCID_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 535: | Line 538: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Code page enumeration flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Code page enumeration flag''' <code> CP_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 549: | Line 552: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Sorting flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Sorting flag''' <code> SORT_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 560: | Line 563: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Compare string return value | + | <div style="font-size: 14px; padding-left: 12px;">'''Compare string return value''' <code> CSTR_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 577: | Line 580: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Country/Region code | + | <div style="font-size: 14px; padding-left: 12px;">'''Country/Region code''' <code> CTRY_* </code></div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 918: | Line 921: | ||
| <code>CTRY_ZIMBABWE = 263;</code> | | <code>CTRY_ZIMBABWE = 263;</code> | ||
| Zimbabwe | | Zimbabwe | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Primary language Id value''' <code> LANG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>LANG_NEUTRAL = $00;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>LANG_ENGLISH = $09;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Sublanguage Id value''' <code> SUBLANG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SUBLANG_NEUTRAL = $00;</code> | ||
+ | | language neutral | ||
+ | |- | ||
+ | | <code>SUBLANG_DEFAULT = $01;</code> | ||
+ | | user default | ||
+ | |- | ||
+ | | <code>SUBLANG_SYS_DEFAULT = $02;</code> | ||
+ | | system default | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SUBLANG_ENGLISH_US = $01;</code> | ||
+ | | English (USA) | ||
|- | |- | ||
|} | |} | ||
Line 926: | Line 967: | ||
---- | ---- | ||
− | '' | + | |
+ | '''Locale Id''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LCID = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>PLCID = ^LCID;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Language Id''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LANGID = Word;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | | <code>PLANGID = ^LANGID;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Language group Id''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LGRPID = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Locale type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>LCTYPE = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Calendar type''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CALTYPE = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Calendar Id''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>CALID = DWORD;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''CP information''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>CPINFO = _cpinfo;</code> | ||
+ | |||
+ | <code>TCpInfo = CPINFO;</code> | ||
+ | |||
+ | <code>PCpInfo = LPCPINFO;</code> | ||
+ | |||
+ | <code>LPCPINFO = ^CPINFO;</code> | ||
+ | |||
+ | <code>_cpinfo = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MaxCharSize: UINT;</code> | ||
+ | | max length (in bytes) of a AnsiChar | ||
+ | |- | ||
+ | | <code>DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE;</code> | ||
+ | | default character | ||
+ | |- | ||
+ | | <code>LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE;</code> | ||
+ | | lead byte ranges | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''CP info extended''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>CPINFOEX = _cpinfoex;</code> | ||
+ | |||
+ | <code>TCpInfoEx = CPINFOEX;</code> | ||
+ | |||
+ | <code>PCpInfoEx = LPCPINFOEX;</code> | ||
+ | |||
+ | <code>LPCPINFOEX = ^CPINFOEX;</code> | ||
+ | |||
+ | <code>_cpinfoex = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MaxCharSize: UINT;</code> | ||
+ | | max length (in bytes) of a AnsiChar | ||
+ | |- | ||
+ | | <code>DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE;</code> | ||
+ | | default character (MB) | ||
+ | |- | ||
+ | | <code>LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE;</code> | ||
+ | | lead byte ranges | ||
+ | |- | ||
+ | | <code>UnicodeDefaultChar: WCHAR;</code> | ||
+ | | default character (Unicode) | ||
+ | |- | ||
+ | | <code>CodePage: UINT;</code> | ||
+ | | code page Id | ||
+ | |- | ||
+ | | <code>CodePageName: array [0..MAX_PATH - 1] of AnsiChar;</code> | ||
+ | | code page name (Ansi) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Code table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PCodeTable = ^TCodeTable;</code> | ||
+ | |||
+ | <code>TCodeTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Code Table - The OEM/ANSI to UNICODE Values of a Code Page | ||
+ | |- | ||
+ | | <code>MaxCharSize:UINT;</code> | ||
+ | | Max Length (Bytes) of a Char | ||
+ | |- | ||
+ | | <code>DefaultChar:array[0..MAX_DEFAULTCHAR - 1] of Byte;</code> | ||
+ | | Default Character | ||
+ | |- | ||
+ | | <code>LeadByte:array[0..MAX_LEADBYTES - 1] of Byte;</code> | ||
+ | | Lead Byte Ranges | ||
+ | |- | ||
+ | | <code>Values:array[$00..$FF] of Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Translation table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PTransTable = ^TTransTable;</code> | ||
+ | |||
+ | <code>TTransTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Trans Table - The OEM/ANSI to ANSI/OEM Values of a Code Page | ||
+ | |- | ||
+ | | <code>TransID:Word;</code> | ||
+ | | Translate Code Page | ||
+ | |- | ||
+ | | <code>Values:array[$00..$FF] of Word;</code> | ||
+ | | Word to allow for DBCS | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Lowercase table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PLowerTable = ^TLowerTable;</code> | ||
+ | |||
+ | <code>TLowerTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Lower Table - Upper to Lower case values of a Code Page | ||
+ | |- | ||
+ | | <code>LowerID:Word;</code> | ||
+ | | Lowercase Code Page | ||
+ | |- | ||
+ | | <code>Values:array[$00..$FF] of Word;</code> | ||
+ | | Word to allow for DBCS | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Uppercase table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PUpperTable = ^TUpperTable;</code> | ||
+ | |||
+ | <code>TUpperTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Upper Table - Lower to Upper case values of a Code Page | ||
+ | |- | ||
+ | | <code>UpperID:Word;</code> | ||
+ | | Uppercase Code Page | ||
+ | |- | ||
+ | | <code>Values:array[$00..$FF] of Word;</code> | ||
+ | | Word to allow for DBCS | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Unicode table''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PUnicodeTable = ^TUnicodeTable;</code> | ||
+ | |||
+ | <code>TUnicodeTable = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Unicode Table - The UNICODE to OEM/ANSI Values of a Code Page | ||
+ | |- | ||
+ | | <code>Values:array[$0000..$FFFF] of Word;</code> | ||
+ | | Word to allow for DBCS | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Lead bytes''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PLeadBytes = ^TLeadBytes;</code> | ||
+ | |||
+ | <code>TLeadBytes = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Lead Bytes - The extended Page Tables for DBCS Pages | ||
+ | |- | ||
+ | | <code>Tables:array[$00..$FF] of PCodeTable;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Code page''' | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PCodePage = ^TCodePage;</code> | ||
+ | |||
+ | <code>TCodePage = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Each Code Table provides the OEM to UNICODE Values. To convert back use the main Unicode Table in the Code Page which was populated when the Code Page was loaded. | ||
+ | |- | ||
+ | |colspan="2"|Note: Code Page - The actual information for an OEM/ANSI Code Page | ||
+ | |- | ||
+ | | <code>PageID:Word;</code> | ||
+ | | Code Page ID (eg 437 or 1252) | ||
+ | |- | ||
+ | | <code>Handle:THandle;</code> | ||
+ | | Handle of Code Page Module | ||
+ | |- | ||
+ | | <code>CodeTable:PCodeTable;</code> | ||
+ | | The OEM/ANSI Values | ||
+ | |- | ||
+ | | <code>LeadBytes:PLeadBytes;</code> | ||
+ | | The Lead Byte Tables | ||
+ | |- | ||
+ | | <code>TransTable:PTransTable;</code> | ||
+ | | The OEM <-> ANSI Values | ||
+ | |- | ||
+ | | <code>LowerTable:PLowerTable;</code> | ||
+ | | The Upper to Lower Values | ||
+ | |- | ||
+ | | <code>UpperTable:PUpperTable;</code> | ||
+ | | The Lower to Upper Values | ||
+ | |- | ||
+ | | <code>UnicodeTable:PUnicodeTable;</code> | ||
+ | | The UNICODE Values | ||
+ | |- | ||
+ | | <code>PrevPage:PCodePage;</code> | ||
+ | | Prev Code Page | ||
+ | |- | ||
+ | | <code>NextPage:PCodePage;</code> | ||
+ | | Next Code Page | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === | ||
Line 937: | Line 1,266: | ||
|- | |- | ||
| <code>OemPage:PCodePage;</code> | | <code>OemPage:PCodePage;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 943: | Line 1,272: | ||
|- | |- | ||
| <code>AnsiPage:PCodePage;</code> | | <code>AnsiPage:PCodePage;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 949: | Line 1,278: | ||
|- | |- | ||
| <code>DefaultPage:PCodePage;</code> | | <code>DefaultPage:PCodePage;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 955: | Line 1,284: | ||
|- | |- | ||
| <code>CodePageLock:TPlatformLock;</code> | | <code>CodePageLock:TPlatformLock;</code> | ||
− | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
Line 972: | Line 1,301: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 987: | Line 1,316: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 999: | Line 1,328: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,011: | Line 1,340: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,023: | Line 1,352: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,035: | Line 1,364: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,047: | Line 1,376: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,059: | Line 1,388: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,071: | Line 1,400: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,083: | Line 1,412: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,095: | Line 1,424: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,107: | Line 1,436: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,119: | Line 1,448: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,131: | Line 1,460: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,143: | Line 1,472: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,155: | Line 1,484: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,167: | Line 1,496: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,179: | Line 1,508: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetSystemDefaultLangID: LANGID;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | System and User values are the same for Ultibo | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function GetUserDefaultLangID: LANGID;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the System Default Language Identifier (Combined Primary and Sub language Identifiers)</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | System and User values are the same for Ultibo | ||
|- | |- | ||
|} | |} | ||
Line 1,194: | Line 1,547: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,209: | Line 1,562: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,221: | Line 1,574: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,233: | Line 1,586: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,245: | Line 1,598: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,257: | Line 1,610: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,269: | Line 1,622: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,281: | Line 1,634: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,293: | Line 1,646: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,305: | Line 1,658: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 04:37, 31 August 2021
Return to Unit Reference
Contents
[hide]Description
Ultibo Locale Interface unit
This unit implements the locale support for Ultibo and provides the code page support for the WideStringManager/UnicodeStringManager interface for the RTL.
This unit provides compatible implementations of the following functions:
- ConvertDefaultLocale
- EnumCodePagesProc
- EnumLocalesProc
- EnumTimeFormats
- GetCPInfo
- GetNumberFormat
- GetSystemDefaultLangID
- GetUserDefaultLangID
- IsValidLocale
- GetConsoleOutputCP
- EnumCalendarInfo
- EnumDateFormats
- EnumSystemCodePages
- EnumTimeFormatsProc
- GetCurrencyFormat
- GetLocaleInfo
- GetSystemDefaultLCID
- GetUserDefaultLCID
- SetLocaleInfo
- SetConsoleCP
- EnumCalendarInfoProc
- EnumDateFormatsProc
- EnumSystemLocales
- GetACP
- GetDateFormat
- GetOEMCP
- GetTimeFormat
- IsValidCodePage
- GetConsoleCP
- SetConsoleOutputCP
The following functions are implemented by the Threads unit:
- GetThreadLocale (ThreadGetLocale) (GetThreadLocale is exposed in the Ultibo unit)
- SetThreadLocale (ThreadSetLocale) (SetThreadLocale is exposed in the Ultibo unit)
Most of the above are currently not implemented.
OEM Code Page defaults to 437 (OEM United States)
ANSI Code Page defaults to 1252 (ANSI Latin 1; Western European (Windows))
See also: https://msdn.microsoft.com/en-us/library/windows/desktop/dd319081%28v=vs.85%29.aspx
Constants
CP_*
CP_OEM_*, CP_ANSI_*
LOCALE_*
MAX_*
MB_*, WC_*
CT_*
C1_*
C2_*
C3_*
NORM_*
MAP_*
LCMAP_*
LGRPID_*
LCID_*
CP_*
SORT_*
CSTR_*
CTRY_*
LANG_*
SUBLANG_*
Type definitions
Locale Id
LCID = DWORD;
|
|
PLCID = ^LCID;
|
Language Id
LANGID = Word;
|
|
PLANGID = ^LANGID;
|
Language group Id
LGRPID = DWORD;
|
Locale type
LCTYPE = DWORD;
|
Calendar type
CALTYPE = DWORD;
|
Calendar Id
CALID = DWORD;
|
CP information
CPINFO = _cpinfo;
TCpInfo = CPINFO;
PCpInfo = LPCPINFO;
LPCPINFO = ^CPINFO;
_cpinfo = record
CP info extended
CPINFOEX = _cpinfoex;
TCpInfoEx = CPINFOEX;
PCpInfoEx = LPCPINFOEX;
LPCPINFOEX = ^CPINFOEX;
_cpinfoex = record
Code table
Translation table
Lowercase table
Uppercase table
Unicode table
Lead bytes
Code page
Public variables
Locale specific variables
OemPage:PCodePage;
|
AnsiPage:PCodePage;
|
DefaultPage:PCodePage;
|
CodePageLock:TPlatformLock;
|
Function declarations
Initialization functions
Locale functions
function GetCPInfo(CodePage:UINT; var lpCPInfo:TCPInfo):BOOL;
function GetCPInfoEx(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
function GetCPInfoExA(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXA):BOOL;
function GetCPInfoExW(CodePage:UINT; dwFlags:DWORD; var lpCPInfoEx:CPINFOEXW):BOOL;
function GetSystemDefaultLangID: LANGID;
function GetUserDefaultLangID: LANGID;
RTL unicode string manager functions
function SysGetStandardCodePage(const stdcp:TStandardCodePageEnum):TSystemCodePage;
Locale helper functions
function MapPage(CodePage:UINT):Word;
function GetPage(PageID:Word):PCodePage;
function CheckPage(Page:PCodePage):Boolean;
function LinkPage(Page:PCodePage):Boolean;
function UnlinkPage(Page:PCodePage):Boolean;
function LoadPage(PageID:Word; Table:PCodeTable; Lower:PLowerTable; Upper:PUpperTable):Boolean;
function UnloadPage(PageID:Word; Page:PCodePage):Boolean;
function InstallTrans(PageID:Word; Table:PTransTable):Boolean;
Return to Unit Reference