JwaWinNLS.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:121k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { National Language Support API interface Unit for Object Pascal               }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: winnls.h, released June 2000. The original Pascal      }
  9. { code is: WinNLS.pas, released December 2000. The initial developer of the    }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaWinNLS;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "WinNls.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinType, JwaWinBase;
  52. ////////////////////////////////////////////////////////////////////////////
  53. //
  54. //  Constants
  55. //
  56. //  Define all constants for the NLS component here.
  57. //
  58. ////////////////////////////////////////////////////////////////////////////
  59. //
  60. //  String Length Maximums.
  61. //
  62. const
  63.   MAX_LEADBYTES   = 12; // 5 ranges, 2 bytes ea., 0 term.
  64.   {$EXTERNALSYM MAX_LEADBYTES}
  65.   MAX_DEFAULTCHAR = 2; // single or double byte
  66.   {$EXTERNALSYM MAX_DEFAULTCHAR}
  67. //
  68. //  MBCS and Unicode Translation Flags.
  69. //
  70.   MB_PRECOMPOSED       = $00000001; // use precomposed chars
  71.   {$EXTERNALSYM MB_PRECOMPOSED}
  72.   MB_COMPOSITE         = $00000002; // use composite chars
  73.   {$EXTERNALSYM MB_COMPOSITE}
  74.   MB_USEGLYPHCHARS     = $00000004; // use glyph chars, not ctrl chars
  75.   {$EXTERNALSYM MB_USEGLYPHCHARS}
  76.   MB_ERR_INVALID_CHARS = $00000008; // error for invalid chars
  77.   {$EXTERNALSYM MB_ERR_INVALID_CHARS}
  78.   WC_COMPOSITECHECK = $00000200; // convert composite to precomposed
  79.   {$EXTERNALSYM WC_COMPOSITECHECK}
  80.   WC_DISCARDNS      = $00000010; // discard non-spacing chars
  81.   {$EXTERNALSYM WC_DISCARDNS}
  82.   WC_SEPCHARS       = $00000020; // generate separate chars
  83.   {$EXTERNALSYM WC_SEPCHARS}
  84.   WC_DEFAULTCHAR    = $00000040; // replace w/ default char
  85.   {$EXTERNALSYM WC_DEFAULTCHAR}
  86.   WC_NO_BEST_FIT_CHARS = $00000400; // do not use best fit chars
  87.   {$EXTERNALSYM WC_NO_BEST_FIT_CHARS}
  88. //
  89. //  Character Type Flags.
  90. //
  91.   CT_CTYPE1 = $00000001; // ctype 1 information
  92.   {$EXTERNALSYM CT_CTYPE1}
  93.   CT_CTYPE2 = $00000002; // ctype 2 information
  94.   {$EXTERNALSYM CT_CTYPE2}
  95.   CT_CTYPE3 = $00000004; // ctype 3 information
  96.   {$EXTERNALSYM CT_CTYPE3}
  97. //
  98. //  CType 1 Flag Bits.
  99. //
  100.   C1_UPPER  = $0001; // upper case
  101.   {$EXTERNALSYM C1_UPPER}
  102.   C1_LOWER  = $0002; // lower case
  103.   {$EXTERNALSYM C1_LOWER}
  104.   C1_DIGIT  = $0004; // decimal digits
  105.   {$EXTERNALSYM C1_DIGIT}
  106.   C1_SPACE  = $0008; // spacing characters
  107.   {$EXTERNALSYM C1_SPACE}
  108.   C1_PUNCT  = $0010; // punctuation characters
  109.   {$EXTERNALSYM C1_PUNCT}
  110.   C1_CNTRL  = $0020; // control characters
  111.   {$EXTERNALSYM C1_CNTRL}
  112.   C1_BLANK  = $0040; // blank characters
  113.   {$EXTERNALSYM C1_BLANK}
  114.   C1_XDIGIT = $0080; // other digits
  115.   {$EXTERNALSYM C1_XDIGIT}
  116.   C1_ALPHA  = $0100; // any linguistic character
  117.   {$EXTERNALSYM C1_ALPHA}
  118.   C1_DEFINED = $0200; // defined character
  119.   {$EXTERNALSYM C1_DEFINED}
  120. //
  121. //  CType 2 Flag Bits.
  122. //
  123.   C2_LEFTTORIGHT = $0001; // left to right
  124.   {$EXTERNALSYM C2_LEFTTORIGHT}
  125.   C2_RIGHTTOLEFT = $0002; // right to left
  126.   {$EXTERNALSYM C2_RIGHTTOLEFT}
  127.   C2_EUROPENUMBER     = $0003; // European number, digit
  128.   {$EXTERNALSYM C2_EUROPENUMBER}
  129.   C2_EUROPESEPARATOR  = $0004; // European numeric separator
  130.   {$EXTERNALSYM C2_EUROPESEPARATOR}
  131.   C2_EUROPETERMINATOR = $0005; // European numeric terminator
  132.   {$EXTERNALSYM C2_EUROPETERMINATOR}
  133.   C2_ARABICNUMBER     = $0006; // Arabic number
  134.   {$EXTERNALSYM C2_ARABICNUMBER}
  135.   C2_COMMONSEPARATOR  = $0007; // common numeric separator
  136.   {$EXTERNALSYM C2_COMMONSEPARATOR}
  137.   C2_BLOCKSEPARATOR   = $0008; // block separator
  138.   {$EXTERNALSYM C2_BLOCKSEPARATOR}
  139.   C2_SEGMENTSEPARATOR = $0009; // segment separator
  140.   {$EXTERNALSYM C2_SEGMENTSEPARATOR}
  141.   C2_WHITESPACE       = $000A; // white space
  142.   {$EXTERNALSYM C2_WHITESPACE}
  143.   C2_OTHERNEUTRAL     = $000B; // other neutrals
  144.   {$EXTERNALSYM C2_OTHERNEUTRAL}
  145.   C2_NOTAPPLICABLE = $0000; // no implicit directionality
  146.   {$EXTERNALSYM C2_NOTAPPLICABLE}
  147. //
  148. //  CType 3 Flag Bits.
  149. //
  150.   C3_NONSPACING = $0001; // nonspacing character
  151.   {$EXTERNALSYM C3_NONSPACING}
  152.   C3_DIACRITIC  = $0002; // diacritic mark
  153.   {$EXTERNALSYM C3_DIACRITIC}
  154.   C3_VOWELMARK  = $0004; // vowel mark
  155.   {$EXTERNALSYM C3_VOWELMARK}
  156.   C3_SYMBOL     = $0008; // symbols
  157.   {$EXTERNALSYM C3_SYMBOL}
  158.   C3_KATAKANA  = $0010; // katakana character
  159.   {$EXTERNALSYM C3_KATAKANA}
  160.   C3_HIRAGANA  = $0020; // hiragana character
  161.   {$EXTERNALSYM C3_HIRAGANA}
  162.   C3_HALFWIDTH = $0040; // half width character
  163.   {$EXTERNALSYM C3_HALFWIDTH}
  164.   C3_FULLWIDTH = $0080; // full width character
  165.   {$EXTERNALSYM C3_FULLWIDTH}
  166.   C3_IDEOGRAPH = $0100; // ideographic character
  167.   {$EXTERNALSYM C3_IDEOGRAPH}
  168.   C3_KASHIDA   = $0200; // Arabic kashida character
  169.   {$EXTERNALSYM C3_KASHIDA}
  170.   C3_LEXICAL   = $0400; // lexical character
  171.   {$EXTERNALSYM C3_LEXICAL}
  172.   C3_ALPHA = $8000; // any linguistic char (C1_ALPHA)
  173.   {$EXTERNALSYM C3_ALPHA}
  174.   C3_NOTAPPLICABLE = $0000; // ctype 3 is not applicable
  175.   {$EXTERNALSYM C3_NOTAPPLICABLE}
  176. //
  177. //  String Flags.
  178. //
  179.   NORM_IGNORECASE     = $00000001; // ignore case
  180.   {$EXTERNALSYM NORM_IGNORECASE}
  181.   NORM_IGNORENONSPACE = $00000002; // ignore nonspacing chars
  182.   {$EXTERNALSYM NORM_IGNORENONSPACE}
  183.   NORM_IGNORESYMBOLS  = $00000004; // ignore symbols
  184.   {$EXTERNALSYM NORM_IGNORESYMBOLS}
  185.   NORM_IGNOREKANATYPE = $00010000; // ignore kanatype
  186.   {$EXTERNALSYM NORM_IGNOREKANATYPE}
  187.   NORM_IGNOREWIDTH    = $00020000; // ignore width
  188.   {$EXTERNALSYM NORM_IGNOREWIDTH}
  189. //
  190. //  Locale Independent Mapping Flags.
  191. //
  192.   MAP_FOLDCZONE   = $00000010; // fold compatibility zone chars
  193.   {$EXTERNALSYM MAP_FOLDCZONE}
  194.   MAP_PRECOMPOSED = $00000020; // convert to precomposed chars
  195.   {$EXTERNALSYM MAP_PRECOMPOSED}
  196.   MAP_COMPOSITE   = $00000040; // convert to composite chars
  197.   {$EXTERNALSYM MAP_COMPOSITE}
  198.   MAP_FOLDDIGITS  = $00000080; // all digits to ASCII 0-9
  199.   {$EXTERNALSYM MAP_FOLDDIGITS}
  200.   MAP_EXPAND_LIGATURES = $00002000; // expand all ligatures
  201.   {$EXTERNALSYM MAP_EXPAND_LIGATURES}
  202. //
  203. //  Locale Dependent Mapping Flags.
  204. //
  205.   LCMAP_LOWERCASE = $00000100; // lower case letters
  206.   {$EXTERNALSYM LCMAP_LOWERCASE}
  207.   LCMAP_UPPERCASE = $00000200; // upper case letters
  208.   {$EXTERNALSYM LCMAP_UPPERCASE}
  209.   LCMAP_SORTKEY   = $00000400; // WC sort key (normalize)
  210.   {$EXTERNALSYM LCMAP_SORTKEY}
  211.   LCMAP_BYTEREV   = $00000800; // byte reversal
  212.   {$EXTERNALSYM LCMAP_BYTEREV}
  213.   LCMAP_HIRAGANA  = $00100000; // map katakana to hiragana
  214.   {$EXTERNALSYM LCMAP_HIRAGANA}
  215.   LCMAP_KATAKANA  = $00200000; // map hiragana to katakana
  216.   {$EXTERNALSYM LCMAP_KATAKANA}
  217.   LCMAP_HALFWIDTH = $00400000; // map double byte to single byte
  218.   {$EXTERNALSYM LCMAP_HALFWIDTH}
  219.   LCMAP_FULLWIDTH = $00800000; // map single byte to double byte
  220.   {$EXTERNALSYM LCMAP_FULLWIDTH}
  221.   LCMAP_LINGUISTIC_CASING = $01000000; // use linguistic rules for casing
  222.   {$EXTERNALSYM LCMAP_LINGUISTIC_CASING}
  223.   LCMAP_SIMPLIFIED_CHINESE  = $02000000; // map traditional chinese to simplified chinese
  224.   {$EXTERNALSYM LCMAP_SIMPLIFIED_CHINESE}
  225.   LCMAP_TRADITIONAL_CHINESE = $04000000; // map simplified chinese to traditional chinese
  226.   {$EXTERNALSYM LCMAP_TRADITIONAL_CHINESE}
  227. //
  228. //  Language Group Enumeration Flags.
  229. //
  230.   LGRPID_INSTALLED = $00000001; // installed language group ids
  231.   {$EXTERNALSYM LGRPID_INSTALLED}
  232.   LGRPID_SUPPORTED = $00000002; // supported language group ids
  233.   {$EXTERNALSYM LGRPID_SUPPORTED}
  234. //
  235. //  Locale Enumeration Flags.
  236. //
  237.   LCID_INSTALLED       = $00000001; // installed locale ids
  238.   {$EXTERNALSYM LCID_INSTALLED}
  239.   LCID_SUPPORTED       = $00000002; // supported locale ids
  240.   {$EXTERNALSYM LCID_SUPPORTED}
  241.   LCID_ALTERNATE_SORTS = $00000004; // alternate sort locale ids
  242.   {$EXTERNALSYM LCID_ALTERNATE_SORTS}
  243. //
  244. //  Code Page Enumeration Flags.
  245. //
  246.   CP_INSTALLED = $00000001; // installed code page ids
  247.   {$EXTERNALSYM CP_INSTALLED}
  248.   CP_SUPPORTED = $00000002; // supported code page ids
  249.   {$EXTERNALSYM CP_SUPPORTED}
  250. //
  251. //  Sorting Flags.
  252. //
  253. //    WORD Sort:    culturally correct sort
  254. //                  hyphen and apostrophe are special cased
  255. //                  example: "coop" and "co-op" will sort together in a list
  256. //
  257. //                        co_op     <-------  underscore (symbol)
  258. //                        coat
  259. //                        comb
  260. //                        coop
  261. //                        co-op     <-------  hyphen (punctuation)
  262. //                        cork
  263. //                        went
  264. //                        were
  265. //                        we're     <-------  apostrophe (punctuation)
  266. //
  267. //
  268. //    STRING Sort:  hyphen and apostrophe will sort with all other symbols
  269. //
  270. //                        co-op     <-------  hyphen (punctuation)
  271. //                        co_op     <-------  underscore (symbol)
  272. //                        coat
  273. //                        comb
  274. //                        coop
  275. //                        cork
  276. //                        we're     <-------  apostrophe (punctuation)
  277. //                        went
  278. //                        were
  279. //
  280.   SORT_STRINGSORT = $00001000; // use string sort method
  281.   {$EXTERNALSYM SORT_STRINGSORT}
  282. //
  283. //  Compare String Return Values.
  284. //
  285.   CSTR_LESS_THAN    = 1; // string 1 less than string 2
  286.   {$EXTERNALSYM CSTR_LESS_THAN}
  287.   CSTR_EQUAL        = 2; // string 1 equal to string 2
  288.   {$EXTERNALSYM CSTR_EQUAL}
  289.   CSTR_GREATER_THAN = 3; // string 1 greater than string 2
  290.   {$EXTERNALSYM CSTR_GREATER_THAN}
  291. //
  292. //  Code Page Default Values.
  293. //
  294.   CP_ACP        = 0; // default to ANSI code page
  295.   {$EXTERNALSYM CP_ACP}
  296.   CP_OEMCP      = 1; // default to OEM  code page
  297.   {$EXTERNALSYM CP_OEMCP}
  298.   CP_MACCP      = 2; // default to MAC  code page
  299.   {$EXTERNALSYM CP_MACCP}
  300.   CP_THREAD_ACP = 3; // current thread's ANSI code page
  301.   {$EXTERNALSYM CP_THREAD_ACP}
  302.   CP_SYMBOL     = 42; // SYMBOL translations
  303.   {$EXTERNALSYM CP_SYMBOL}
  304.   CP_UTF7 = 65000; // UTF-7 translation
  305.   {$EXTERNALSYM CP_UTF7}
  306.   CP_UTF8 = 65001; // UTF-8 translation
  307.   {$EXTERNALSYM CP_UTF8}
  308. //
  309. //  Country/Region Codes.
  310. //
  311.   CTRY_DEFAULT = 0;
  312.   {$EXTERNALSYM CTRY_DEFAULT}
  313.   CTRY_ALBANIA            = 355; // Albania
  314.   {$EXTERNALSYM CTRY_ALBANIA}
  315.   CTRY_ALGERIA            = 213; // Algeria
  316.   {$EXTERNALSYM CTRY_ALGERIA}
  317.   CTRY_ARGENTINA          = 54; // Argentina
  318.   {$EXTERNALSYM CTRY_ARGENTINA}
  319.   CTRY_ARMENIA            = 374; // Armenia
  320.   {$EXTERNALSYM CTRY_ARMENIA}
  321.   CTRY_AUSTRALIA          = 61; // Australia
  322.   {$EXTERNALSYM CTRY_AUSTRALIA}
  323.   CTRY_AUSTRIA            = 43; // Austria
  324.   {$EXTERNALSYM CTRY_AUSTRIA}
  325.   CTRY_AZERBAIJAN         = 994; // Azerbaijan
  326.   {$EXTERNALSYM CTRY_AZERBAIJAN}
  327.   CTRY_BAHRAIN            = 973; // Bahrain
  328.   {$EXTERNALSYM CTRY_BAHRAIN}
  329.   CTRY_BELARUS            = 375; // Belarus
  330.   {$EXTERNALSYM CTRY_BELARUS}
  331.   CTRY_BELGIUM            = 32; // Belgium
  332.   {$EXTERNALSYM CTRY_BELGIUM}
  333.   CTRY_BELIZE             = 501; // Belize
  334.   {$EXTERNALSYM CTRY_BELIZE}
  335.   CTRY_BOLIVIA            = 591; // Bolivia
  336.   {$EXTERNALSYM CTRY_BOLIVIA}
  337.   CTRY_BRAZIL             = 55; // Brazil
  338.   {$EXTERNALSYM CTRY_BRAZIL}
  339.   CTRY_BRUNEI_DARUSSALAM  = 673; // Brunei Darussalam
  340.   {$EXTERNALSYM CTRY_BRUNEI_DARUSSALAM}
  341.   CTRY_BULGARIA           = 359; // Bulgaria
  342.   {$EXTERNALSYM CTRY_BULGARIA}
  343.   CTRY_CANADA             = 2; // Canada
  344.   {$EXTERNALSYM CTRY_CANADA}
  345.   CTRY_CARIBBEAN          = 1; // Caribbean
  346.   {$EXTERNALSYM CTRY_CARIBBEAN}
  347.   CTRY_CHILE              = 56; // Chile
  348.   {$EXTERNALSYM CTRY_CHILE}
  349.   CTRY_COLOMBIA           = 57; // Colombia
  350.   {$EXTERNALSYM CTRY_COLOMBIA}
  351.   CTRY_COSTA_RICA         = 506; // Costa Rica
  352.   {$EXTERNALSYM CTRY_COSTA_RICA}
  353.   CTRY_CROATIA            = 385; // Croatia
  354.   {$EXTERNALSYM CTRY_CROATIA}
  355.   CTRY_CZECH              = 420; // Czech Republic
  356.   {$EXTERNALSYM CTRY_CZECH}
  357.   CTRY_DENMARK            = 45; // Denmark
  358.   {$EXTERNALSYM CTRY_DENMARK}
  359.   CTRY_DOMINICAN_REPUBLIC = 1; // Dominican Republic
  360.   {$EXTERNALSYM CTRY_DOMINICAN_REPUBLIC}
  361.   CTRY_ECUADOR            = 593; // Ecuador
  362.   {$EXTERNALSYM CTRY_ECUADOR}
  363.   CTRY_EGYPT              = 20; // Egypt
  364.   {$EXTERNALSYM CTRY_EGYPT}
  365.   CTRY_EL_SALVADOR        = 503; // El Salvador
  366.   {$EXTERNALSYM CTRY_EL_SALVADOR}
  367.   CTRY_ESTONIA            = 372; // Estonia
  368.   {$EXTERNALSYM CTRY_ESTONIA}
  369.   CTRY_FAEROE_ISLANDS     = 298; // Faeroe Islands
  370.   {$EXTERNALSYM CTRY_FAEROE_ISLANDS}
  371.   CTRY_FINLAND            = 358; // Finland
  372.   {$EXTERNALSYM CTRY_FINLAND}
  373.   CTRY_FRANCE             = 33; // France
  374.   {$EXTERNALSYM CTRY_FRANCE}
  375.   CTRY_GEORGIA            = 995; // Georgia
  376.   {$EXTERNALSYM CTRY_GEORGIA}
  377.   CTRY_GERMANY            = 49; // Germany
  378.   {$EXTERNALSYM CTRY_GERMANY}
  379.   CTRY_GREECE             = 30; // Greece
  380.   {$EXTERNALSYM CTRY_GREECE}
  381.   CTRY_GUATEMALA          = 502; // Guatemala
  382.   {$EXTERNALSYM CTRY_GUATEMALA}
  383.   CTRY_HONDURAS           = 504; // Honduras
  384.   {$EXTERNALSYM CTRY_HONDURAS}
  385.   CTRY_HONG_KONG          = 852; // Hong Kong S.A.R., P.R.C.
  386.   {$EXTERNALSYM CTRY_HONG_KONG}
  387.   CTRY_HUNGARY            = 36; // Hungary
  388.   {$EXTERNALSYM CTRY_HUNGARY}
  389.   CTRY_ICELAND            = 354; // Iceland
  390.   {$EXTERNALSYM CTRY_ICELAND}
  391.   CTRY_INDIA              = 91; // India
  392.   {$EXTERNALSYM CTRY_INDIA}
  393.   CTRY_INDONESIA          = 62; // Indonesia
  394.   {$EXTERNALSYM CTRY_INDONESIA}
  395.   CTRY_IRAN               = 981; // Iran
  396.   {$EXTERNALSYM CTRY_IRAN}
  397.   CTRY_IRAQ               = 964; // Iraq
  398.   {$EXTERNALSYM CTRY_IRAQ}
  399.   CTRY_IRELAND            = 353; // Ireland
  400.   {$EXTERNALSYM CTRY_IRELAND}
  401.   CTRY_ISRAEL             = 972; // Israel
  402.   {$EXTERNALSYM CTRY_ISRAEL}
  403.   CTRY_ITALY              = 39; // Italy
  404.   {$EXTERNALSYM CTRY_ITALY}
  405.   CTRY_JAMAICA            = 1; // Jamaica
  406.   {$EXTERNALSYM CTRY_JAMAICA}
  407.   CTRY_JAPAN              = 81; // Japan
  408.   {$EXTERNALSYM CTRY_JAPAN}
  409.   CTRY_JORDAN             = 962; // Jordan
  410.   {$EXTERNALSYM CTRY_JORDAN}
  411.   CTRY_KAZAKSTAN          = 7; // Kazakstan
  412.   {$EXTERNALSYM CTRY_KAZAKSTAN}
  413.   CTRY_KENYA              = 254; // Kenya
  414.   {$EXTERNALSYM CTRY_KENYA}
  415.   CTRY_KUWAIT             = 965; // Kuwait
  416.   {$EXTERNALSYM CTRY_KUWAIT}
  417.   CTRY_KYRGYZSTAN         = 996; // Kyrgyzstan
  418.   {$EXTERNALSYM CTRY_KYRGYZSTAN}
  419.   CTRY_LATVIA             = 371; // Latvia
  420.   {$EXTERNALSYM CTRY_LATVIA}
  421.   CTRY_LEBANON            = 961; // Lebanon
  422.   {$EXTERNALSYM CTRY_LEBANON}
  423.   CTRY_LIBYA              = 218; // Libya
  424.   {$EXTERNALSYM CTRY_LIBYA}
  425.   CTRY_LIECHTENSTEIN      = 41; // Liechtenstein
  426.   {$EXTERNALSYM CTRY_LIECHTENSTEIN}
  427.   CTRY_LITHUANIA          = 370; // Lithuania
  428.   {$EXTERNALSYM CTRY_LITHUANIA}
  429.   CTRY_LUXEMBOURG         = 352; // Luxembourg
  430.   {$EXTERNALSYM CTRY_LUXEMBOURG}
  431.   CTRY_MACAU              = 853; // Macau S.A.R., PRC
  432.   {$EXTERNALSYM CTRY_MACAU}
  433.   CTRY_MACEDONIA          = 389; // Former Yugoslav Republic of Macedonia
  434.   {$EXTERNALSYM CTRY_MACEDONIA}
  435.   CTRY_MALAYSIA           = 60; // Malaysia
  436.   {$EXTERNALSYM CTRY_MALAYSIA}
  437.   CTRY_MALDIVES           = 960; // Maldives
  438.   {$EXTERNALSYM CTRY_MALDIVES}
  439.   CTRY_MEXICO             = 52; // Mexico
  440.   {$EXTERNALSYM CTRY_MEXICO}
  441.   CTRY_MONACO             = 33; // Principality of Monaco
  442.   {$EXTERNALSYM CTRY_MONACO}
  443.   CTRY_MONGOLIA           = 976; // Mongolia
  444.   {$EXTERNALSYM CTRY_MONGOLIA}
  445.   CTRY_MOROCCO            = 212; // Morocco
  446.   {$EXTERNALSYM CTRY_MOROCCO}
  447.   CTRY_NETHERLANDS        = 31; // Netherlands
  448.   {$EXTERNALSYM CTRY_NETHERLANDS}
  449.   CTRY_NEW_ZEALAND        = 64; // New Zealand
  450.   {$EXTERNALSYM CTRY_NEW_ZEALAND}
  451.   CTRY_NICARAGUA          = 505; // Nicaragua
  452.   {$EXTERNALSYM CTRY_NICARAGUA}
  453.   CTRY_NORWAY             = 47; // Norway
  454.   {$EXTERNALSYM CTRY_NORWAY}
  455.   CTRY_OMAN               = 968; // Oman
  456.   {$EXTERNALSYM CTRY_OMAN}
  457.   CTRY_PAKISTAN           = 92; // Islamic Republic of Pakistan
  458.   {$EXTERNALSYM CTRY_PAKISTAN}
  459.   CTRY_PANAMA             = 507; // Panama
  460.   {$EXTERNALSYM CTRY_PANAMA}
  461.   CTRY_PARAGUAY           = 595; // Paraguay
  462.   {$EXTERNALSYM CTRY_PARAGUAY}
  463.   CTRY_PERU               = 51; // Peru
  464.   {$EXTERNALSYM CTRY_PERU}
  465.   CTRY_PHILIPPINES        = 63; // Republic of the Philippines
  466.   {$EXTERNALSYM CTRY_PHILIPPINES}
  467.   CTRY_POLAND             = 48; // Poland
  468.   {$EXTERNALSYM CTRY_POLAND}
  469.   CTRY_PORTUGAL           = 351; // Portugal
  470.   {$EXTERNALSYM CTRY_PORTUGAL}
  471.   CTRY_PRCHINA            = 86; // People's Republic of China
  472.   {$EXTERNALSYM CTRY_PRCHINA}
  473.   CTRY_PUERTO_RICO        = 1; // Puerto Rico
  474.   {$EXTERNALSYM CTRY_PUERTO_RICO}
  475.   CTRY_QATAR              = 974; // Qatar
  476.   {$EXTERNALSYM CTRY_QATAR}
  477.   CTRY_ROMANIA            = 40; // Romania
  478.   {$EXTERNALSYM CTRY_ROMANIA}
  479.   CTRY_RUSSIA             = 7; // Russia
  480.   {$EXTERNALSYM CTRY_RUSSIA}
  481.   CTRY_SAUDI_ARABIA       = 966; // Saudi Arabia
  482.   {$EXTERNALSYM CTRY_SAUDI_ARABIA}
  483.   CTRY_SERBIA             = 381; // Serbia
  484.   {$EXTERNALSYM CTRY_SERBIA}
  485.   CTRY_SINGAPORE          = 65; // Singapore
  486.   {$EXTERNALSYM CTRY_SINGAPORE}
  487.   CTRY_SLOVAK             = 421; // Slovak Republic
  488.   {$EXTERNALSYM CTRY_SLOVAK}
  489.   CTRY_SLOVENIA           = 386; // Slovenia
  490.   {$EXTERNALSYM CTRY_SLOVENIA}
  491.   CTRY_SOUTH_AFRICA       = 27; // South Africa
  492.   {$EXTERNALSYM CTRY_SOUTH_AFRICA}
  493.   CTRY_SOUTH_KOREA        = 82; // Korea
  494.   {$EXTERNALSYM CTRY_SOUTH_KOREA}
  495.   CTRY_SPAIN              = 34; // Spain
  496.   {$EXTERNALSYM CTRY_SPAIN}
  497.   CTRY_SWEDEN             = 46; // Sweden
  498.   {$EXTERNALSYM CTRY_SWEDEN}
  499.   CTRY_SWITZERLAND        = 41; // Switzerland
  500.   {$EXTERNALSYM CTRY_SWITZERLAND}
  501.   CTRY_SYRIA              = 963; // Syria
  502.   {$EXTERNALSYM CTRY_SYRIA}
  503.   CTRY_TAIWAN             = 886; // Taiwan
  504.   {$EXTERNALSYM CTRY_TAIWAN}
  505.   CTRY_TATARSTAN          = 7; // Tatarstan
  506.   {$EXTERNALSYM CTRY_TATARSTAN}
  507.   CTRY_THAILAND           = 66; // Thailand
  508.   {$EXTERNALSYM CTRY_THAILAND}
  509.   CTRY_TRINIDAD_Y_TOBAGO  = 1; // Trinidad y Tobago
  510.   {$EXTERNALSYM CTRY_TRINIDAD_Y_TOBAGO}
  511.   CTRY_TUNISIA            = 216; // Tunisia
  512.   {$EXTERNALSYM CTRY_TUNISIA}
  513.   CTRY_TURKEY             = 90; // Turkey
  514.   {$EXTERNALSYM CTRY_TURKEY}
  515.   CTRY_UAE                = 971; // U.A.E.
  516.   {$EXTERNALSYM CTRY_UAE}
  517.   CTRY_UKRAINE            = 380; // Ukraine
  518.   {$EXTERNALSYM CTRY_UKRAINE}
  519.   CTRY_UNITED_KINGDOM     = 44; // United Kingdom
  520.   {$EXTERNALSYM CTRY_UNITED_KINGDOM}
  521.   CTRY_UNITED_STATES      = 1; // United States
  522.   {$EXTERNALSYM CTRY_UNITED_STATES}
  523.   CTRY_URUGUAY            = 598; // Uruguay
  524.   {$EXTERNALSYM CTRY_URUGUAY}
  525.   CTRY_UZBEKISTAN         = 7; // Uzbekistan
  526.   {$EXTERNALSYM CTRY_UZBEKISTAN}
  527.   CTRY_VENEZUELA          = 58; // Venezuela
  528.   {$EXTERNALSYM CTRY_VENEZUELA}
  529.   CTRY_VIET_NAM           = 84; // Viet Nam
  530.   {$EXTERNALSYM CTRY_VIET_NAM}
  531.   CTRY_YEMEN              = 967; // Yemen
  532.   {$EXTERNALSYM CTRY_YEMEN}
  533.   CTRY_ZIMBABWE           = 263; // Zimbabwe
  534.   {$EXTERNALSYM CTRY_ZIMBABWE}
  535. //
  536. //  Locale Types.
  537. //
  538. //  These types are used for the GetLocaleInfo NLS API routine.
  539. //  Some of these types are also used for the SetLocaleInfo NLS API routine.
  540. //
  541. //
  542. //  The following LCTypes may be used in combination with any other LCTypes.
  543. //
  544. //    LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and
  545. //    GetDateFormat.
  546. //
  547. //    LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need
  548. //    to do string translation.
  549. //
  550. //    LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a
  551. //    number instead of a string.  This flag is only valid for the LCTypes
  552. //    beginning with LOCALE_I.
  553. //
  554.   LOCALE_NOUSEROVERRIDE = DWORD($80000000); // do not use user overrides
  555.   {$EXTERNALSYM LOCALE_NOUSEROVERRIDE}
  556.   LOCALE_USE_CP_ACP     = $40000000; // use the system ACP
  557.   {$EXTERNALSYM LOCALE_USE_CP_ACP}
  558.   LOCALE_RETURN_NUMBER = $20000000; // return number instead of string
  559.   {$EXTERNALSYM LOCALE_RETURN_NUMBER}
  560. //
  561. //  The following LCTypes are mutually exclusive in that they may NOT
  562. //  be used in combination with each other.
  563. //
  564.   LOCALE_ILANGUAGE       = $00000001; // language id
  565.   {$EXTERNALSYM LOCALE_ILANGUAGE}
  566.   LOCALE_SLANGUAGE       = $00000002; // localized name of language
  567.   {$EXTERNALSYM LOCALE_SLANGUAGE}
  568.   LOCALE_SENGLANGUAGE    = $00001001; // English name of language
  569.   {$EXTERNALSYM LOCALE_SENGLANGUAGE}
  570.   LOCALE_SABBREVLANGNAME = $00000003; // abbreviated language name
  571.   {$EXTERNALSYM LOCALE_SABBREVLANGNAME}
  572.   LOCALE_SNATIVELANGNAME = $00000004; // native name of language
  573.   {$EXTERNALSYM LOCALE_SNATIVELANGNAME}
  574.   LOCALE_ICOUNTRY        = $00000005; // country code
  575.   {$EXTERNALSYM LOCALE_ICOUNTRY}
  576.   LOCALE_SCOUNTRY        = $00000006; // localized name of country
  577.   {$EXTERNALSYM LOCALE_SCOUNTRY}
  578.   LOCALE_SENGCOUNTRY     = $00001002; // English name of country
  579.   {$EXTERNALSYM LOCALE_SENGCOUNTRY}
  580.   LOCALE_SABBREVCTRYNAME = $00000007; // abbreviated country name
  581.   {$EXTERNALSYM LOCALE_SABBREVCTRYNAME}
  582.   LOCALE_SNATIVECTRYNAME = $00000008; // native name of country
  583.   {$EXTERNALSYM LOCALE_SNATIVECTRYNAME}
  584.   LOCALE_IDEFAULTLANGUAGE     = $00000009; // default language id
  585.   {$EXTERNALSYM LOCALE_IDEFAULTLANGUAGE}
  586.   LOCALE_IDEFAULTCOUNTRY      = $0000000A; // default country code
  587.   {$EXTERNALSYM LOCALE_IDEFAULTCOUNTRY}
  588.   LOCALE_IDEFAULTCODEPAGE     = $0000000B; // default oem code page
  589.   {$EXTERNALSYM LOCALE_IDEFAULTCODEPAGE}
  590.   LOCALE_IDEFAULTANSICODEPAGE = $00001004; // default ansi code page
  591.   {$EXTERNALSYM LOCALE_IDEFAULTANSICODEPAGE}
  592.   LOCALE_IDEFAULTMACCODEPAGE  = $00001011; // default mac code page
  593.   {$EXTERNALSYM LOCALE_IDEFAULTMACCODEPAGE}
  594.   LOCALE_SLIST    = $0000000C; // list item separator
  595.   {$EXTERNALSYM LOCALE_SLIST}
  596.   LOCALE_IMEASURE = $0000000D; // 0 = metric, 1 = US
  597.   {$EXTERNALSYM LOCALE_IMEASURE}
  598.   LOCALE_SDECIMAL      = $0000000E; // decimal separator
  599.   {$EXTERNALSYM LOCALE_SDECIMAL}
  600.   LOCALE_STHOUSAND     = $0000000F; // thousand separator
  601.   {$EXTERNALSYM LOCALE_STHOUSAND}
  602.   LOCALE_SGROUPING     = $00000010; // digit grouping
  603.   {$EXTERNALSYM LOCALE_SGROUPING}
  604.   LOCALE_IDIGITS       = $00000011; // number of fractional digits
  605.   {$EXTERNALSYM LOCALE_IDIGITS}
  606.   LOCALE_ILZERO        = $00000012; // leading zeros for decimal
  607.   {$EXTERNALSYM LOCALE_ILZERO}
  608.   LOCALE_INEGNUMBER    = $00001010; // negative number mode
  609.   {$EXTERNALSYM LOCALE_INEGNUMBER}
  610.   LOCALE_SNATIVEDIGITS = $00000013; // native ascii 0-9
  611.   {$EXTERNALSYM LOCALE_SNATIVEDIGITS}
  612.   LOCALE_SCURRENCY       = $00000014; // local monetary symbol
  613.   {$EXTERNALSYM LOCALE_SCURRENCY}
  614.   LOCALE_SINTLSYMBOL     = $00000015; // intl monetary symbol
  615.   {$EXTERNALSYM LOCALE_SINTLSYMBOL}
  616.   LOCALE_SMONDECIMALSEP  = $00000016; // monetary decimal separator
  617.   {$EXTERNALSYM LOCALE_SMONDECIMALSEP}
  618.   LOCALE_SMONTHOUSANDSEP = $00000017; // monetary thousand separator
  619.   {$EXTERNALSYM LOCALE_SMONTHOUSANDSEP}
  620.   LOCALE_SMONGROUPING    = $00000018; // monetary grouping
  621.   {$EXTERNALSYM LOCALE_SMONGROUPING}
  622.   LOCALE_ICURRDIGITS     = $00000019; // # local monetary digits
  623.   {$EXTERNALSYM LOCALE_ICURRDIGITS}
  624.   LOCALE_IINTLCURRDIGITS = $0000001A; // # intl monetary digits
  625.   {$EXTERNALSYM LOCALE_IINTLCURRDIGITS}
  626.   LOCALE_ICURRENCY       = $0000001B; // positive currency mode
  627.   {$EXTERNALSYM LOCALE_ICURRENCY}
  628.   LOCALE_INEGCURR        = $0000001C; // negative currency mode
  629.   {$EXTERNALSYM LOCALE_INEGCURR}
  630.   LOCALE_SDATE         = $0000001D; // date separator
  631.   {$EXTERNALSYM LOCALE_SDATE}
  632.   LOCALE_STIME         = $0000001E; // time separator
  633.   {$EXTERNALSYM LOCALE_STIME}
  634.   LOCALE_SSHORTDATE    = $0000001F; // short date format string
  635.   {$EXTERNALSYM LOCALE_SSHORTDATE}
  636.   LOCALE_SLONGDATE     = $00000020; // long date format string
  637.   {$EXTERNALSYM LOCALE_SLONGDATE}
  638.   LOCALE_STIMEFORMAT   = $00001003; // time format string
  639.   {$EXTERNALSYM LOCALE_STIMEFORMAT}
  640.   LOCALE_IDATE         = $00000021; // short date format ordering
  641.   {$EXTERNALSYM LOCALE_IDATE}
  642.   LOCALE_ILDATE        = $00000022; // long date format ordering
  643.   {$EXTERNALSYM LOCALE_ILDATE}
  644.   LOCALE_ITIME         = $00000023; // time format specifier
  645.   {$EXTERNALSYM LOCALE_ITIME}
  646.   LOCALE_ITIMEMARKPOSN = $00001005; // time marker position
  647.   {$EXTERNALSYM LOCALE_ITIMEMARKPOSN}
  648.   LOCALE_ICENTURY      = $00000024; // century format specifier (short date)
  649.   {$EXTERNALSYM LOCALE_ICENTURY}
  650.   LOCALE_ITLZERO       = $00000025; // leading zeros in time field
  651.   {$EXTERNALSYM LOCALE_ITLZERO}
  652.   LOCALE_IDAYLZERO     = $00000026; // leading zeros in day field (short date)
  653.   {$EXTERNALSYM LOCALE_IDAYLZERO}
  654.   LOCALE_IMONLZERO     = $00000027; // leading zeros in month field (short date)
  655.   {$EXTERNALSYM LOCALE_IMONLZERO}
  656.   LOCALE_S1159         = $00000028; // AM designator
  657.   {$EXTERNALSYM LOCALE_S1159}
  658.   LOCALE_S2359         = $00000029; // PM designator
  659.   {$EXTERNALSYM LOCALE_S2359}
  660.   LOCALE_ICALENDARTYPE     = $00001009; // type of calendar specifier
  661.   {$EXTERNALSYM LOCALE_ICALENDARTYPE}
  662.   LOCALE_IOPTIONALCALENDAR = $0000100B; // additional calendar types specifier
  663.   {$EXTERNALSYM LOCALE_IOPTIONALCALENDAR}
  664.   LOCALE_IFIRSTDAYOFWEEK   = $0000100C; // first day of week specifier
  665.   {$EXTERNALSYM LOCALE_IFIRSTDAYOFWEEK}
  666.   LOCALE_IFIRSTWEEKOFYEAR  = $0000100D; // first week of year specifier
  667.   {$EXTERNALSYM LOCALE_IFIRSTWEEKOFYEAR}
  668.   LOCALE_SDAYNAME1          = $0000002A; // long name for Monday
  669.   {$EXTERNALSYM LOCALE_SDAYNAME1}
  670.   LOCALE_SDAYNAME2          = $0000002B; // long name for Tuesday
  671.   {$EXTERNALSYM LOCALE_SDAYNAME2}
  672.   LOCALE_SDAYNAME3          = $0000002C; // long name for Wednesday
  673.   {$EXTERNALSYM LOCALE_SDAYNAME3}
  674.   LOCALE_SDAYNAME4          = $0000002D; // long name for Thursday
  675.   {$EXTERNALSYM LOCALE_SDAYNAME4}
  676.   LOCALE_SDAYNAME5          = $0000002E; // long name for Friday
  677.   {$EXTERNALSYM LOCALE_SDAYNAME5}
  678.   LOCALE_SDAYNAME6          = $0000002F; // long name for Saturday
  679.   {$EXTERNALSYM LOCALE_SDAYNAME6}
  680.   LOCALE_SDAYNAME7          = $00000030; // long name for Sunday
  681.   {$EXTERNALSYM LOCALE_SDAYNAME7}
  682.   LOCALE_SABBREVDAYNAME1    = $00000031; // abbreviated name for Monday
  683.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME1}
  684.   LOCALE_SABBREVDAYNAME2    = $00000032; // abbreviated name for Tuesday
  685.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME2}
  686.   LOCALE_SABBREVDAYNAME3    = $00000033; // abbreviated name for Wednesday
  687.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME3}
  688.   LOCALE_SABBREVDAYNAME4    = $00000034; // abbreviated name for Thursday
  689.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME4}
  690.   LOCALE_SABBREVDAYNAME5    = $00000035; // abbreviated name for Friday
  691.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME5}
  692.   LOCALE_SABBREVDAYNAME6    = $00000036; // abbreviated name for Saturday
  693.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME6}
  694.   LOCALE_SABBREVDAYNAME7    = $00000037; // abbreviated name for Sunday
  695.   {$EXTERNALSYM LOCALE_SABBREVDAYNAME7}
  696.   LOCALE_SMONTHNAME1        = $00000038; // long name for January
  697.   {$EXTERNALSYM LOCALE_SMONTHNAME1}
  698.   LOCALE_SMONTHNAME2        = $00000039; // long name for February
  699.   {$EXTERNALSYM LOCALE_SMONTHNAME2}
  700.   LOCALE_SMONTHNAME3        = $0000003A; // long name for March
  701.   {$EXTERNALSYM LOCALE_SMONTHNAME3}
  702.   LOCALE_SMONTHNAME4        = $0000003B; // long name for April
  703.   {$EXTERNALSYM LOCALE_SMONTHNAME4}
  704.   LOCALE_SMONTHNAME5        = $0000003C; // long name for May
  705.   {$EXTERNALSYM LOCALE_SMONTHNAME5}
  706.   LOCALE_SMONTHNAME6        = $0000003D; // long name for June
  707.   {$EXTERNALSYM LOCALE_SMONTHNAME6}
  708.   LOCALE_SMONTHNAME7        = $0000003E; // long name for July
  709.   {$EXTERNALSYM LOCALE_SMONTHNAME7}
  710.   LOCALE_SMONTHNAME8        = $0000003F; // long name for August
  711.   {$EXTERNALSYM LOCALE_SMONTHNAME8}
  712.   LOCALE_SMONTHNAME9        = $00000040; // long name for September
  713.   {$EXTERNALSYM LOCALE_SMONTHNAME9}
  714.   LOCALE_SMONTHNAME10       = $00000041; // long name for October
  715.   {$EXTERNALSYM LOCALE_SMONTHNAME10}
  716.   LOCALE_SMONTHNAME11       = $00000042; // long name for November
  717.   {$EXTERNALSYM LOCALE_SMONTHNAME11}
  718.   LOCALE_SMONTHNAME12       = $00000043; // long name for December
  719.   {$EXTERNALSYM LOCALE_SMONTHNAME12}
  720.   LOCALE_SMONTHNAME13       = $0000100E; // long name for 13th month (if exists)
  721.   {$EXTERNALSYM LOCALE_SMONTHNAME13}
  722.   LOCALE_SABBREVMONTHNAME1  = $00000044; // abbreviated name for January
  723.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME1}
  724.   LOCALE_SABBREVMONTHNAME2  = $00000045; // abbreviated name for February
  725.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME2}
  726.   LOCALE_SABBREVMONTHNAME3  = $00000046; // abbreviated name for March
  727.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME3}
  728.   LOCALE_SABBREVMONTHNAME4  = $00000047; // abbreviated name for April
  729.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME4}
  730.   LOCALE_SABBREVMONTHNAME5  = $00000048; // abbreviated name for May
  731.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME5}
  732.   LOCALE_SABBREVMONTHNAME6  = $00000049; // abbreviated name for June
  733.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME6}
  734.   LOCALE_SABBREVMONTHNAME7  = $0000004A; // abbreviated name for July
  735.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME7}
  736.   LOCALE_SABBREVMONTHNAME8  = $0000004B; // abbreviated name for August
  737.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME8}
  738.   LOCALE_SABBREVMONTHNAME9  = $0000004C; // abbreviated name for September
  739.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME9}
  740.   LOCALE_SABBREVMONTHNAME10 = $0000004D; // abbreviated name for October
  741.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME10}
  742.   LOCALE_SABBREVMONTHNAME11 = $0000004E; // abbreviated name for November
  743.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME11}
  744.   LOCALE_SABBREVMONTHNAME12 = $0000004F; // abbreviated name for December
  745.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME12}
  746.   LOCALE_SABBREVMONTHNAME13 = $0000100F; // abbreviated name for 13th month (if exists)
  747.   {$EXTERNALSYM LOCALE_SABBREVMONTHNAME13}
  748.   LOCALE_SPOSITIVESIGN   = $00000050; // positive sign
  749.   {$EXTERNALSYM LOCALE_SPOSITIVESIGN}
  750.   LOCALE_SNEGATIVESIGN   = $00000051; // negative sign
  751.   {$EXTERNALSYM LOCALE_SNEGATIVESIGN}
  752.   LOCALE_IPOSSIGNPOSN    = $00000052; // positive sign position
  753.   {$EXTERNALSYM LOCALE_IPOSSIGNPOSN}
  754.   LOCALE_INEGSIGNPOSN    = $00000053; // negative sign position
  755.   {$EXTERNALSYM LOCALE_INEGSIGNPOSN}
  756.   LOCALE_IPOSSYMPRECEDES = $00000054; // mon sym precedes pos amt
  757.   {$EXTERNALSYM LOCALE_IPOSSYMPRECEDES}
  758.   LOCALE_IPOSSEPBYSPACE  = $00000055; // mon sym sep by space from pos amt
  759.   {$EXTERNALSYM LOCALE_IPOSSEPBYSPACE}
  760.   LOCALE_INEGSYMPRECEDES = $00000056; // mon sym precedes neg amt
  761.   {$EXTERNALSYM LOCALE_INEGSYMPRECEDES}
  762.   LOCALE_INEGSEPBYSPACE  = $00000057; // mon sym sep by space from neg amt
  763.   {$EXTERNALSYM LOCALE_INEGSEPBYSPACE}
  764.   LOCALE_FONTSIGNATURE    = $00000058; // font signature
  765.   {$EXTERNALSYM LOCALE_FONTSIGNATURE}
  766.   LOCALE_SISO639LANGNAME  = $00000059; // ISO abbreviated language name
  767.   {$EXTERNALSYM LOCALE_SISO639LANGNAME}
  768.   LOCALE_SISO3166CTRYNAME = $0000005A; // ISO abbreviated country name
  769.   {$EXTERNALSYM LOCALE_SISO3166CTRYNAME}
  770.   LOCALE_IDEFAULTEBCDICCODEPAGE = $00001012; // default ebcdic code page
  771.   {$EXTERNALSYM LOCALE_IDEFAULTEBCDICCODEPAGE}
  772.   LOCALE_IPAPERSIZE             = $0000100A; // 1 = letter, 5 = legal, 8 = a3, 9 = a4
  773.   {$EXTERNALSYM LOCALE_IPAPERSIZE}
  774.   LOCALE_SENGCURRNAME           = $00001007; // english name of currency
  775.   {$EXTERNALSYM LOCALE_SENGCURRNAME}
  776.   LOCALE_SNATIVECURRNAME        = $00001008; // native name of currency
  777.   {$EXTERNALSYM LOCALE_SNATIVECURRNAME}
  778.   LOCALE_SYEARMONTH             = $00001006; // year month format string
  779.   {$EXTERNALSYM LOCALE_SYEARMONTH}
  780.   LOCALE_SSORTNAME              = $00001013; // sort name
  781.   {$EXTERNALSYM LOCALE_SSORTNAME}
  782.   LOCALE_IDIGITSUBSTITUTION     = $00001014; // 0 = context, 1 = none, 2 = national
  783.   {$EXTERNALSYM LOCALE_IDIGITSUBSTITUTION}
  784. //
  785. //  Time Flags for GetTimeFormat.
  786. //
  787.   TIME_NOMINUTESORSECONDS = $00000001; // do not use minutes or seconds
  788.   {$EXTERNALSYM TIME_NOMINUTESORSECONDS}
  789.   TIME_NOSECONDS          = $00000002; // do not use seconds
  790.   {$EXTERNALSYM TIME_NOSECONDS}
  791.   TIME_NOTIMEMARKER       = $00000004; // do not use time marker
  792.   {$EXTERNALSYM TIME_NOTIMEMARKER}
  793.   TIME_FORCE24HOURFORMAT  = $00000008; // always use 24 hour format
  794.   {$EXTERNALSYM TIME_FORCE24HOURFORMAT}
  795. //
  796. //  Date Flags for GetDateFormat.
  797. //
  798.   DATE_SHORTDATE        = $00000001; // use short date picture
  799.   {$EXTERNALSYM DATE_SHORTDATE}
  800.   DATE_LONGDATE         = $00000002; // use long date picture
  801.   {$EXTERNALSYM DATE_LONGDATE}
  802.   DATE_USE_ALT_CALENDAR = $00000004; // use alternate calendar (if any)
  803.   {$EXTERNALSYM DATE_USE_ALT_CALENDAR}
  804.   DATE_YEARMONTH  = $00000008; // use year month picture
  805.   {$EXTERNALSYM DATE_YEARMONTH}
  806.   DATE_LTRREADING = $00000010; // add marks for left to right reading order layout
  807.   {$EXTERNALSYM DATE_LTRREADING}
  808.   DATE_RTLREADING = $00000020; // add marks for right to left reading order layout
  809.   {$EXTERNALSYM DATE_RTLREADING}
  810. //
  811. //  Calendar Types.
  812. //
  813. //  These types are used for the EnumCalendarInfo and GetCalendarInfo
  814. //  NLS API routines.
  815. //  Some of these types are also used for the SetCalendarInfo NLS API
  816. //  routine.
  817. //
  818. //
  819. //  The following CalTypes may be used in combination with any other CalTypes.
  820. //
  821. //    CAL_NOUSEROVERRIDE
  822. //
  823. //    CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
  824. //    translation.
  825. //
  826. //    CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
  827. //    number instead of a string.  This flag is only valid for the CalTypes
  828. //    beginning with CAL_I.
  829. //
  830.   CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE; // do not use user overrides
  831.   {$EXTERNALSYM CAL_NOUSEROVERRIDE}
  832.   CAL_USE_CP_ACP     = LOCALE_USE_CP_ACP; // use the system ACP
  833.   {$EXTERNALSYM CAL_USE_CP_ACP}
  834.   CAL_RETURN_NUMBER  = LOCALE_RETURN_NUMBER; // return number instead of string
  835.   {$EXTERNALSYM CAL_RETURN_NUMBER}
  836. //
  837. //  The following CalTypes are mutually exclusive in that they may NOT
  838. //  be used in combination with each other.
  839. //
  840.   CAL_ICALINTVALUE       = $00000001; // calendar type
  841.   {$EXTERNALSYM CAL_ICALINTVALUE}
  842.   CAL_SCALNAME           = $00000002; // native name of calendar
  843.   {$EXTERNALSYM CAL_SCALNAME}
  844.   CAL_IYEAROFFSETRANGE   = $00000003; // starting years of eras
  845.   {$EXTERNALSYM CAL_IYEAROFFSETRANGE}
  846.   CAL_SERASTRING         = $00000004; // era name for IYearOffsetRanges
  847.   {$EXTERNALSYM CAL_SERASTRING}
  848.   CAL_SSHORTDATE         = $00000005; // short date format string
  849.   {$EXTERNALSYM CAL_SSHORTDATE}
  850.   CAL_SLONGDATE          = $00000006; // long date format string
  851.   {$EXTERNALSYM CAL_SLONGDATE}
  852.   CAL_SDAYNAME1          = $00000007; // native name for Monday
  853.   {$EXTERNALSYM CAL_SDAYNAME1}
  854.   CAL_SDAYNAME2          = $00000008; // native name for Tuesday
  855.   {$EXTERNALSYM CAL_SDAYNAME2}
  856.   CAL_SDAYNAME3          = $00000009; // native name for Wednesday
  857.   {$EXTERNALSYM CAL_SDAYNAME3}
  858.   CAL_SDAYNAME4          = $0000000a; // native name for Thursday
  859.   {$EXTERNALSYM CAL_SDAYNAME4}
  860.   CAL_SDAYNAME5          = $0000000b; // native name for Friday
  861.   {$EXTERNALSYM CAL_SDAYNAME5}
  862.   CAL_SDAYNAME6          = $0000000c; // native name for Saturday
  863.   {$EXTERNALSYM CAL_SDAYNAME6}
  864.   CAL_SDAYNAME7          = $0000000d; // native name for Sunday
  865.   {$EXTERNALSYM CAL_SDAYNAME7}
  866.   CAL_SABBREVDAYNAME1    = $0000000e; // abbreviated name for Monday
  867.   {$EXTERNALSYM CAL_SABBREVDAYNAME1}
  868.   CAL_SABBREVDAYNAME2    = $0000000f; // abbreviated name for Tuesday
  869.   {$EXTERNALSYM CAL_SABBREVDAYNAME2}
  870.   CAL_SABBREVDAYNAME3    = $00000010; // abbreviated name for Wednesday
  871.   {$EXTERNALSYM CAL_SABBREVDAYNAME3}
  872.   CAL_SABBREVDAYNAME4    = $00000011; // abbreviated name for Thursday
  873.   {$EXTERNALSYM CAL_SABBREVDAYNAME4}
  874.   CAL_SABBREVDAYNAME5    = $00000012; // abbreviated name for Friday
  875.   {$EXTERNALSYM CAL_SABBREVDAYNAME5}
  876.   CAL_SABBREVDAYNAME6    = $00000013; // abbreviated name for Saturday
  877.   {$EXTERNALSYM CAL_SABBREVDAYNAME6}
  878.   CAL_SABBREVDAYNAME7    = $00000014; // abbreviated name for Sunday
  879.   {$EXTERNALSYM CAL_SABBREVDAYNAME7}
  880.   CAL_SMONTHNAME1        = $00000015; // native name for January
  881.   {$EXTERNALSYM CAL_SMONTHNAME1}
  882.   CAL_SMONTHNAME2        = $00000016; // native name for February
  883.   {$EXTERNALSYM CAL_SMONTHNAME2}
  884.   CAL_SMONTHNAME3        = $00000017; // native name for March
  885.   {$EXTERNALSYM CAL_SMONTHNAME3}
  886.   CAL_SMONTHNAME4        = $00000018; // native name for April
  887.   {$EXTERNALSYM CAL_SMONTHNAME4}
  888.   CAL_SMONTHNAME5        = $00000019; // native name for May
  889.   {$EXTERNALSYM CAL_SMONTHNAME5}
  890.   CAL_SMONTHNAME6        = $0000001a; // native name for June
  891.   {$EXTERNALSYM CAL_SMONTHNAME6}
  892.   CAL_SMONTHNAME7        = $0000001b; // native name for July
  893.   {$EXTERNALSYM CAL_SMONTHNAME7}
  894.   CAL_SMONTHNAME8        = $0000001c; // native name for August
  895.   {$EXTERNALSYM CAL_SMONTHNAME8}
  896.   CAL_SMONTHNAME9        = $0000001d; // native name for September
  897.   {$EXTERNALSYM CAL_SMONTHNAME9}
  898.   CAL_SMONTHNAME10       = $0000001e; // native name for October
  899.   {$EXTERNALSYM CAL_SMONTHNAME10}
  900.   CAL_SMONTHNAME11       = $0000001f; // native name for November
  901.   {$EXTERNALSYM CAL_SMONTHNAME11}
  902.   CAL_SMONTHNAME12       = $00000020; // native name for December
  903.   {$EXTERNALSYM CAL_SMONTHNAME12}
  904.   CAL_SMONTHNAME13       = $00000021; // native name for 13th month (if any)
  905.   {$EXTERNALSYM CAL_SMONTHNAME13}
  906.   CAL_SABBREVMONTHNAME1  = $00000022; // abbreviated name for January
  907.   {$EXTERNALSYM CAL_SABBREVMONTHNAME1}
  908.   CAL_SABBREVMONTHNAME2  = $00000023; // abbreviated name for February
  909.   {$EXTERNALSYM CAL_SABBREVMONTHNAME2}
  910.   CAL_SABBREVMONTHNAME3  = $00000024; // abbreviated name for March
  911.   {$EXTERNALSYM CAL_SABBREVMONTHNAME3}
  912.   CAL_SABBREVMONTHNAME4  = $00000025; // abbreviated name for April
  913.   {$EXTERNALSYM CAL_SABBREVMONTHNAME4}
  914.   CAL_SABBREVMONTHNAME5  = $00000026; // abbreviated name for May
  915.   {$EXTERNALSYM CAL_SABBREVMONTHNAME5}
  916.   CAL_SABBREVMONTHNAME6  = $00000027; // abbreviated name for June
  917.   {$EXTERNALSYM CAL_SABBREVMONTHNAME6}
  918.   CAL_SABBREVMONTHNAME7  = $00000028; // abbreviated name for July
  919.   {$EXTERNALSYM CAL_SABBREVMONTHNAME7}
  920.   CAL_SABBREVMONTHNAME8  = $00000029; // abbreviated name for August
  921.   {$EXTERNALSYM CAL_SABBREVMONTHNAME8}
  922.   CAL_SABBREVMONTHNAME9  = $0000002a; // abbreviated name for September
  923.   {$EXTERNALSYM CAL_SABBREVMONTHNAME9}
  924.   CAL_SABBREVMONTHNAME10 = $0000002b; // abbreviated name for October
  925.   {$EXTERNALSYM CAL_SABBREVMONTHNAME10}
  926.   CAL_SABBREVMONTHNAME11 = $0000002c; // abbreviated name for November
  927.   {$EXTERNALSYM CAL_SABBREVMONTHNAME11}
  928.   CAL_SABBREVMONTHNAME12 = $0000002d; // abbreviated name for December
  929.   {$EXTERNALSYM CAL_SABBREVMONTHNAME12}
  930.   CAL_SABBREVMONTHNAME13 = $0000002e; // abbreviated name for 13th month (if any)
  931.   {$EXTERNALSYM CAL_SABBREVMONTHNAME13}
  932.   CAL_SYEARMONTH       = $0000002f; // year month format string
  933.   {$EXTERNALSYM CAL_SYEARMONTH}
  934.   CAL_ITWODIGITYEARMAX = $00000030; // two digit year max
  935.   {$EXTERNALSYM CAL_ITWODIGITYEARMAX}
  936. //
  937. //  Calendar Enumeration Value.
  938. //
  939.   ENUM_ALL_CALENDARS = DWORD($ffffffff); // enumerate all calendars
  940.   {$EXTERNALSYM ENUM_ALL_CALENDARS}
  941. //
  942. //  Calendar ID Values.
  943. //
  944.   CAL_GREGORIAN              = 1; // Gregorian (localized) calendar
  945.   {$EXTERNALSYM CAL_GREGORIAN}
  946.   CAL_GREGORIAN_US           = 2; // Gregorian (U.S.) calendar
  947.   {$EXTERNALSYM CAL_GREGORIAN_US}
  948.   CAL_JAPAN                  = 3; // Japanese Emperor Era calendar
  949.   {$EXTERNALSYM CAL_JAPAN}
  950.   CAL_TAIWAN                 = 4; // Taiwan Era calendar
  951.   {$EXTERNALSYM CAL_TAIWAN}
  952.   CAL_KOREA                  = 5; // Korean Tangun calendar
  953.   {$EXTERNALSYM CAL_KOREA}
  954.   CAL_HIJRI                  = 6; // Hijri (Arabic Lunar) calendar
  955.   {$EXTERNALSYM CAL_HIJRI}
  956.   CAL_THAI                   = 7; // Thai calendar
  957.   {$EXTERNALSYM CAL_THAI}
  958.   CAL_HEBREW                 = 8; // Hebrew (Lunar) calendar
  959.   {$EXTERNALSYM CAL_HEBREW}
  960.   CAL_GREGORIAN_ME_FRENCH    = 9; // Gregorian Middle East French calendar
  961.   {$EXTERNALSYM CAL_GREGORIAN_ME_FRENCH}
  962.   CAL_GREGORIAN_ARABIC       = 10; // Gregorian Arabic calendar
  963.   {$EXTERNALSYM CAL_GREGORIAN_ARABIC}
  964.   CAL_GREGORIAN_XLIT_ENGLISH = 11; // Gregorian Transliterated English calendar
  965.   {$EXTERNALSYM CAL_GREGORIAN_XLIT_ENGLISH}
  966.   CAL_GREGORIAN_XLIT_FRENCH  = 12; // Gregorian Transliterated French calendar
  967.   {$EXTERNALSYM CAL_GREGORIAN_XLIT_FRENCH}
  968. //
  969. //  Language Group ID Values.
  970. //
  971.   LGRPID_WESTERN_EUROPE      = $0001; // Western Europe & U.S.
  972.   {$EXTERNALSYM LGRPID_WESTERN_EUROPE}
  973.   LGRPID_CENTRAL_EUROPE      = $0002; // Central Europe
  974.   {$EXTERNALSYM LGRPID_CENTRAL_EUROPE}
  975.   LGRPID_BALTIC              = $0003; // Baltic
  976.   {$EXTERNALSYM LGRPID_BALTIC}
  977.   LGRPID_GREEK               = $0004; // Greek
  978.   {$EXTERNALSYM LGRPID_GREEK}
  979.   LGRPID_CYRILLIC            = $0005; // Cyrillic
  980.   {$EXTERNALSYM LGRPID_CYRILLIC}
  981.   LGRPID_TURKISH             = $0006; // Turkish
  982.   {$EXTERNALSYM LGRPID_TURKISH}
  983.   LGRPID_JAPANESE            = $0007; // Japanese
  984.   {$EXTERNALSYM LGRPID_JAPANESE}
  985.   LGRPID_KOREAN              = $0008; // Korean
  986.   {$EXTERNALSYM LGRPID_KOREAN}
  987.   LGRPID_TRADITIONAL_CHINESE = $0009; // Traditional Chinese
  988.   {$EXTERNALSYM LGRPID_TRADITIONAL_CHINESE}
  989.   LGRPID_SIMPLIFIED_CHINESE  = $000a; // Simplified Chinese
  990.   {$EXTERNALSYM LGRPID_SIMPLIFIED_CHINESE}
  991.   LGRPID_THAI                = $000b; // Thai
  992.   {$EXTERNALSYM LGRPID_THAI}
  993.   LGRPID_HEBREW              = $000c; // Hebrew
  994.   {$EXTERNALSYM LGRPID_HEBREW}
  995.   LGRPID_ARABIC              = $000d; // Arabic
  996.   {$EXTERNALSYM LGRPID_ARABIC}
  997.   LGRPID_VIETNAMESE          = $000e; // Vietnamese
  998.   {$EXTERNALSYM LGRPID_VIETNAMESE}
  999.   LGRPID_INDIC               = $000f; // Indic
  1000.   {$EXTERNALSYM LGRPID_INDIC}
  1001.   LGRPID_GEORGIAN            = $0010; // Georgian
  1002.   {$EXTERNALSYM LGRPID_GEORGIAN}
  1003.   LGRPID_ARMENIAN            = $0011; // Armenian
  1004.   {$EXTERNALSYM LGRPID_ARMENIAN}
  1005. ////////////////////////////////////////////////////////////////////////////
  1006. //
  1007. //  Typedefs
  1008. //
  1009. //  Define all types for the NLS component here.
  1010. //
  1011. ////////////////////////////////////////////////////////////////////////////
  1012. //
  1013. //  Language Group ID.
  1014. //
  1015. type
  1016.   LGRPID = DWORD;
  1017.   {$EXTERNALSYM LGRPID}
  1018. //
  1019. //  Locale type constant.
  1020. //
  1021.   LCTYPE = DWORD;
  1022.   {$EXTERNALSYM LCTYPE}
  1023. //
  1024. //  Calendar type constant.
  1025. //
  1026.   CALTYPE = DWORD;
  1027.   {$EXTERNALSYM CALTYPE}
  1028. //
  1029. //  Calendar ID.
  1030. //
  1031.   CALID = DWORD;
  1032.   {$EXTERNALSYM CALID}
  1033. //
  1034. //  CP Info.
  1035. //
  1036.   LPCPINFO = ^CPINFO;
  1037.   {$EXTERNALSYM LPCPINFO}
  1038.   _cpinfo = record
  1039.     MaxCharSize: UINT; // max length (in bytes) of a char
  1040.     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character
  1041.     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
  1042.   end;
  1043.   {$EXTERNALSYM _cpinfo}
  1044.   CPINFO = _cpinfo;
  1045.   {$EXTERNALSYM CPINFO}
  1046.   TCpInfo = CPINFO;
  1047.   PCpInfo = LPCPINFO;
  1048.   {$EXTERNALSYM CPINFOEXA}
  1049.   LPCPINFOEXA = ^CPINFOEXA;
  1050.   _cpinfoexA = record
  1051.     MaxCharSize: UINT; // max length (in bytes) of a char
  1052.     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character (MB)
  1053.     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
  1054.     UnicodeDefaultChar: WCHAR; // default character (Unicode)
  1055.     CodePage: UINT; // code page id
  1056.     CodePageName: array [0..MAX_PATH - 1] of CHAR; // code page name (Unicode)
  1057.   end;
  1058.   {$EXTERNALSYM _cpinfoexA}
  1059.   CPINFOEXA = _cpinfoexA;
  1060.   {$EXTERNALSYM LPCPINFOEXA}
  1061.   TCpInfoExA = CPINFOEXA;
  1062.   PCpInfoExA = LPCPINFOEXA;
  1063.   LPCPINFOEXW = ^CPINFOEXW;
  1064.   {$EXTERNALSYM LPCPINFOEXW}
  1065.   _cpinfoexW = record
  1066.     MaxCharSize: UINT; // max length (in bytes) of a char
  1067.     DefaultChar: array [0..MAX_DEFAULTCHAR - 1] of BYTE; // default character (MB)
  1068.     LeadByte: array [0..MAX_LEADBYTES - 1] of BYTE; // lead byte ranges
  1069.     UnicodeDefaultChar: WCHAR; // default character (Unicode)
  1070.     CodePage: UINT; // code page id
  1071.     CodePageName: array [0..MAX_PATH - 1] of WCHAR; // code page name (Unicode)
  1072.   end;
  1073.   {$EXTERNALSYM _cpinfoexW}
  1074.   CPINFOEXW = _cpinfoexW;
  1075.   {$EXTERNALSYM CPINFOEXW}
  1076.   TCpInfoExW = CPINFOEXW;
  1077.   PCpInfoExW = LPCPINFOEXW;
  1078. {$IFDEF UNICODE}
  1079.   CPINFOEX = CPINFOEXW;
  1080.   {$EXTERNALSYM CPINFOEX}
  1081.   LPCPINFOEX = LPCPINFOEXW;
  1082.   {$EXTERNALSYM LPCPINFOEX}
  1083.   TCpInfoEx = TCpInfoExW;
  1084.   PCpInfoEx = PCpInfoExW;
  1085. {$ELSE}
  1086.   CPINFOEX = CPINFOEXA;
  1087.   {$EXTERNALSYM CPINFOEX}
  1088.   LPCPINFOEX = LPCPINFOEXA;
  1089.   {$EXTERNALSYM LPCPINFOEX}
  1090.   TCpInfoEx = TCpInfoExA;
  1091.   PCpInfoEx = PCpInfoExA;
  1092. {$ENDIF}
  1093. //
  1094. //  Number format.
  1095. //
  1096.   LPNUMBERFMTA = ^NUMBERFMTA;
  1097.   {$EXTERNALSYM LPNUMBERFMTA}
  1098.   _numberfmtA = record
  1099.     NumDigits: UINT; // number of decimal digits
  1100.     LeadingZero: UINT; // if leading zero in decimal fields
  1101.     Grouping: UINT; // group size left of decimal
  1102.     lpDecimalSep: LPSTR; // ptr to decimal separator string
  1103.     lpThousandSep: LPSTR; // ptr to thousand separator string
  1104.     NegativeOrder: UINT; // negative number ordering
  1105.   end;
  1106.   {$EXTERNALSYM _numberfmtA}
  1107.   NUMBERFMTA = _numberfmtA;
  1108.   {$EXTERNALSYM NUMBERFMTA}
  1109.   TNumberFmtA = NUMBERFMTA;
  1110.   PNumberFmtA = LPNUMBERFMTA;
  1111.   LPNUMBERFMTW = ^NUMBERFMTW;
  1112.   {$EXTERNALSYM LPNUMBERFMTW}
  1113.   _numberfmtW = record
  1114.     NumDigits: UINT; // number of decimal digits
  1115.     LeadingZero: UINT; // if leading zero in decimal fields
  1116.     Grouping: UINT; // group size left of decimal
  1117.     lpDecimalSep: LPWSTR; // ptr to decimal separator string
  1118.     lpThousandSep: LPWSTR; // ptr to thousand separator string
  1119.     NegativeOrder: UINT; // negative number ordering
  1120.   end;
  1121.   {$EXTERNALSYM _numberfmtW}
  1122.   NUMBERFMTW = _numberfmtW;
  1123.   {$EXTERNALSYM NUMBERFMTW}
  1124.   TNumberFmtW = NUMBERFMTW;
  1125.   PNumberFmtW = LPNUMBERFMTW;
  1126. {$IFDEF UNICODE}
  1127.   NUMBERFMT = NUMBERFMTW;
  1128.   {$EXTERNALSYM NUMBERFMT}
  1129.   LPNUMBERFMT = LPNUMBERFMTW;
  1130.   {$EXTERNALSYM LPNUMBERFMT}
  1131.   TNumberFmt = TNumberFmtW;
  1132.   PNumberFmt = TNumberFmtW;
  1133. {$ELSE}
  1134.   NUMBERFMT = NUMBERFMTA;
  1135.   {$EXTERNALSYM NUMBERFMT}
  1136.   LPNUMBERFMT = LPNUMBERFMTA;
  1137.   {$EXTERNALSYM LPNUMBERFMT}
  1138.   TNumberFmt = TNumberFmtA;
  1139.   PNumberFmt = TNumberFmtA;
  1140. {$ENDIF}
  1141. //
  1142. //  Currency format.
  1143. //
  1144.   LPCURRENCYFMTA = ^CURRENCYFMTA;
  1145.   {$EXTERNALSYM LPCURRENCYFMTA}
  1146.   _currencyfmtA = record
  1147.     NumDigits: UINT; // number of decimal digits
  1148.     LeadingZero: UINT; // if leading zero in decimal fields
  1149.     Grouping: UINT; // group size left of decimal
  1150.     lpDecimalSep: LPSTR; // ptr to decimal separator string
  1151.     lpThousandSep: LPSTR; // ptr to thousand separator string
  1152.     NegativeOrder: UINT; // negative currency ordering
  1153.     PositiveOrder: UINT; // positive currency ordering
  1154.     lpCurrencySymbol: LPSTR; // ptr to currency symbol string
  1155.   end;
  1156.   {$EXTERNALSYM _currencyfmtA}
  1157.   CURRENCYFMTA = _currencyfmtA;
  1158.   {$EXTERNALSYM CURRENCYFMTA}
  1159.   TCurrencyFmtA = CURRENCYFMTA;
  1160.   PCurrencyFmtA = LPCURRENCYFMTA;
  1161.   LPCURRENCYFMTW = ^CURRENCYFMTW;
  1162.   {$EXTERNALSYM LPCURRENCYFMTW}
  1163.   _currencyfmtW = record
  1164.     NumDigits: UINT; // number of decimal digits
  1165.     LeadingZero: UINT; // if leading zero in decimal fields
  1166.     Grouping: UINT; // group size left of decimal
  1167.     lpDecimalSep: LPWSTR; // ptr to decimal separator string
  1168.     lpThousandSep: LPWSTR; // ptr to thousand separator string
  1169.     NegativeOrder: UINT; // negative currency ordering
  1170.     PositiveOrder: UINT; // positive currency ordering
  1171.     lpCurrencySymbol: LPWSTR; // ptr to currency symbol string
  1172.   end;
  1173.   {$EXTERNALSYM _currencyfmtW}
  1174.   CURRENCYFMTW = _currencyfmtW;
  1175.   {$EXTERNALSYM CURRENCYFMTW}
  1176.   TCurrencyFmtW = CURRENCYFMTW;
  1177.   PCurrencyFmtW = LPCURRENCYFMTW;
  1178. {$IFDEF UNICODE}
  1179.   CURRENCYFMT = CURRENCYFMTW;
  1180.   {$EXTERNALSYM CURRENCYFMT}
  1181.   LPCURRENCYFMT = LPCURRENCYFMTW;
  1182.   {$EXTERNALSYM LPCURRENCYFMT}
  1183.   TCurrencyFmt = TCurrencyFmtW;
  1184.   PCurrencyFmt = PCurrencyFmtW;
  1185. {$ELSE}
  1186.   CURRENCYFMT = CURRENCYFMTA;
  1187.   {$EXTERNALSYM CURRENCYFMT}
  1188.   LPCURRENCYFMT = LPCURRENCYFMTA;
  1189.   {$EXTERNALSYM LPCURRENCYFMT}
  1190.   TCurrencyFmt = TCurrencyFmtA;
  1191.   PCurrencyFmt = PCurrencyFmtA;
  1192. {$ENDIF}
  1193. //
  1194. //  NLS function capabilities
  1195. //
  1196. const
  1197.   COMPARE_STRING    =  $0001;
  1198.   {$EXTERNALSYM COMPARE_STRING}
  1199. type
  1200.   SYSNLS_FUNCTION = DWORD;
  1201.   {$EXTERNALSYM SYSNLS_FUNCTION}
  1202.   NLS_FUNCTION = DWORD;
  1203.   {$EXTERNALSYM NLS_FUNCTION}
  1204.   TSysNlsFunction = SYSNLS_FUNCTION;
  1205.   TNlsFunction = NLS_FUNCTION;
  1206.  
  1207. //
  1208. //  NLS version structure.
  1209. //
  1210.   _nlsversioninfo = record
  1211.     dwNLSVersionInfoSize: DWORD;
  1212.     dwNLSVersion: DWORD;
  1213.     dwDefinedVersion: DWORD;
  1214.   end;
  1215.   {$EXTERNALSYM _nlsversioninfo}
  1216.   NLSVERSIONINFO = _nlsversioninfo;
  1217.   {$EXTERNALSYM NLSVERSIONINFO}
  1218.   LPNLSVERSIONINFO = ^NLSVERSIONINFO;
  1219.   {$EXTERNALSYM LPNLSVERSIONINFO}
  1220.   TNlsVersionInfo = NLSVERSIONINFO;
  1221.   PNlsVersionInfo = LPNLSVERSIONINFO;
  1222. //
  1223. //  GEO defines
  1224. //
  1225. type
  1226.   GEOID = LONG;
  1227.   {$EXTERNALSYM GEOID}
  1228.   GEOTYPE = DWORD;
  1229.   {$EXTERNALSYM GEOTYPE}
  1230.   GEOCLASS = DWORD;
  1231.   {$EXTERNALSYM GEOCLASS}
  1232. const
  1233.   GEOID_NOT_AVAILABLE = -1;
  1234.   {$EXTERNALSYM GEOID_NOT_AVAILABLE}
  1235. //
  1236. //  GEO information types for clients to query
  1237. //
  1238. const
  1239.   GEO_NATION       = $0001;
  1240.   {$EXTERNALSYM GEO_NATION}
  1241.   GEO_LATITUDE     = $0002;
  1242.   {$EXTERNALSYM GEO_LATITUDE}
  1243.   GEO_LONGITUDE    = $0003;
  1244.   {$EXTERNALSYM GEO_LONGITUDE}
  1245.   GEO_ISO2         = $0004;
  1246.   {$EXTERNALSYM GEO_ISO2}
  1247.   GEO_ISO3         = $0005;
  1248.   {$EXTERNALSYM GEO_ISO3}
  1249.   GEO_RFC1766      = $0006;
  1250.   {$EXTERNALSYM GEO_RFC1766}
  1251.   GEO_LCID         = $0007;
  1252.   {$EXTERNALSYM GEO_LCID}
  1253.   GEO_FRIENDLYNAME = $0008;
  1254.   {$EXTERNALSYM GEO_FRIENDLYNAME}
  1255.   GEO_OFFICIALNAME = $0009;
  1256.   {$EXTERNALSYM GEO_OFFICIALNAME}
  1257.   GEO_TIMEZONES    = $000A;
  1258.   {$EXTERNALSYM GEO_TIMEZONES}
  1259.   GEO_OFFICIALLANGUAGES = $000B;
  1260.   {$EXTERNALSYM GEO_OFFICIALLANGUAGES}
  1261. type
  1262.   SYSGEOTYPE = DWORD;
  1263.   {$EXTERNALSYM SYSGEOTYPE}
  1264. //
  1265. //  More GEOCLASS defines will be listed here
  1266. //
  1267. const
  1268.   GEOCLASS_NATION = 16;
  1269.   {$EXTERNALSYM GEOCLASS_NATION}
  1270.   GEOCLASS_REGION = 14;
  1271.   {$EXTERNALSYM GEOCLASS_REGION}
  1272. type
  1273.   SYSGEOCLASS = DWORD;
  1274.   {$EXTERNALSYM SYSGEOCLASS}
  1275. //
  1276. //  Enumeration function constants.
  1277. //
  1278. type
  1279.   LANGUAGEGROUP_ENUMPROCA = function (LanguageGroup: LGRPID; lpLanguageGroupString,
  1280.     lpLanguageGroupNameSting: LPSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1281.   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROCA}
  1282.   LANGGROUPLOCALE_ENUMPROCA = function (LanguageGroup: LGRPID; Locale: LCID;
  1283.     lpLocaleString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  1284.   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROCA}
  1285.   UILANGUAGE_ENUMPROCA = function (lpUILanguageString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  1286.   {$EXTERNALSYM UILANGUAGE_ENUMPROCA}
  1287.   LOCALE_ENUMPROCA = function (lpLocaleString: LPSTR): BOOL; stdcall;
  1288.   {$EXTERNALSYM LOCALE_ENUMPROCA}
  1289.   CODEPAGE_ENUMPROCA = function (lpCodePAgeString: LPSTR): BOOL; stdcall;
  1290.   {$EXTERNALSYM CODEPAGE_ENUMPROCA}
  1291.   DATEFMT_ENUMPROCA = function (lpDateFormatString: LPSTR): BOOL; stdcall;
  1292.   {$EXTERNALSYM DATEFMT_ENUMPROCA}
  1293.   DATEFMT_ENUMPROCEXA = function (lpDateFormatString: LPSTR; CalenderId: CALID): BOOL; stdcall;
  1294.   {$EXTERNALSYM DATEFMT_ENUMPROCEXA}
  1295.   TIMEFMT_ENUMPROCA = function (lpTimeFormatString: LPSTR): BOOL; stdcall;
  1296.   {$EXTERNALSYM TIMEFMT_ENUMPROCA}
  1297.   CALINFO_ENUMPROCA = function (lpCalendarInfoString: LPSTR): BOOL; stdcall;
  1298.   {$EXTERNALSYM CALINFO_ENUMPROCA}
  1299.   CALINFO_ENUMPROCEXA = function (lpCalendarInfoString: LPSTR; Calendar: CALID): BOOL; stdcall;
  1300.   {$EXTERNALSYM CALINFO_ENUMPROCEXA}
  1301.   LANGUAGEGROUP_ENUMPROCW = function (LanguageGroup: LGRPID; lpLanguageGroupString,
  1302.     lpLanguageGroupNameSting: LPWSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1303.   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROCW}
  1304.   LANGGROUPLOCALE_ENUMPROCW = function (LanguageGroup: LGRPID; Locale: LCID;
  1305.     lpLocaleString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  1306.   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROCW}
  1307.   UILANGUAGE_ENUMPROCW = function (lpUILanguageString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  1308.   {$EXTERNALSYM UILANGUAGE_ENUMPROCW}
  1309.   LOCALE_ENUMPROCW = function (lpLocaleString: LPWSTR): BOOL; stdcall;
  1310.   {$EXTERNALSYM LOCALE_ENUMPROCW}
  1311.   CODEPAGE_ENUMPROCW = function (lpCodePAgeString: LPWSTR): BOOL; stdcall;
  1312.   {$EXTERNALSYM CODEPAGE_ENUMPROCW}
  1313.   DATEFMT_ENUMPROCW = function (lpDateFormatString: LPWSTR): BOOL; stdcall;
  1314.   {$EXTERNALSYM DATEFMT_ENUMPROCW}
  1315.   DATEFMT_ENUMPROCEXW = function (lpDateFormatString: LPWSTR; CalenderId: CALID): BOOL; stdcall;
  1316.   {$EXTERNALSYM DATEFMT_ENUMPROCEXW}
  1317.   TIMEFMT_ENUMPROCW = function (lpTimeFormatString: LPWSTR): BOOL; stdcall;
  1318.   {$EXTERNALSYM TIMEFMT_ENUMPROCW}
  1319.   CALINFO_ENUMPROCW = function (lpCalendarInfoString: LPWSTR): BOOL; stdcall;
  1320.   {$EXTERNALSYM CALINFO_ENUMPROCW}
  1321.   CALINFO_ENUMPROCEXW = function (lpCalendarInfoString: LPWSTR; Calendar: CALID): BOOL; stdcall;
  1322.   {$EXTERNALSYM CALINFO_ENUMPROCEXW}
  1323.   GEO_ENUMPROC = function (geo: GEOID): BOOL; stdcall;
  1324.   {$EXTERNALSYM GEO_ENUMPROC}
  1325. {$IFDEF UNICODE}
  1326.   LANGUAGEGROUP_ENUMPROC = function (LanguageGroup: LGRPID; lpLanguageGroupString,
  1327.     lpLanguageGroupNameSting: LPWSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1328.   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROC}
  1329.   LANGGROUPLOCALE_ENUMPROC = function (LanguageGroup: LGRPID; Locale: LCID;
  1330.     lpLocaleString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  1331.   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROC}
  1332.   UILANGUAGE_ENUMPROC = function (lpUILanguageString: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  1333.   {$EXTERNALSYM UILANGUAGE_ENUMPROC}
  1334.   LOCALE_ENUMPROC = function (lpLocaleString: LPWSTR): BOOL; stdcall;
  1335.   {$EXTERNALSYM LOCALE_ENUMPROC}
  1336.   CODEPAGE_ENUMPROC = function (lpCodePAgeString: LPWSTR): BOOL; stdcall;
  1337.   {$EXTERNALSYM CODEPAGE_ENUMPROC}
  1338.   DATEFMT_ENUMPROC = function (lpDateFormatString: LPWSTR): BOOL; stdcall;
  1339.   {$EXTERNALSYM DATEFMT_ENUMPROC}
  1340.   DATEFMT_ENUMPROCEX = function (lpDateFormatString: LPWSTR; CalenderId: CALID): BOOL; stdcall;
  1341.   {$EXTERNALSYM DATEFMT_ENUMPROCEX}
  1342.   TIMEFMT_ENUMPROC = function (lpTimeFormatString: LPWSTR): BOOL; stdcall;
  1343.   {$EXTERNALSYM TIMEFMT_ENUMPROC}
  1344.   CALINFO_ENUMPROC = function (lpCalendarInfoString: LPWSTR): BOOL; stdcall;
  1345.   {$EXTERNALSYM CALINFO_ENUMPROC}
  1346.   CALINFO_ENUMPROCEX = function (lpCalendarInfoString: LPWSTR; Calendar: CALID): BOOL; stdcall;
  1347.   {$EXTERNALSYM CALINFO_ENUMPROCEX}
  1348. {$ELSE}
  1349.   LANGUAGEGROUP_ENUMPROC = function (LanguageGroup: LGRPID; lpLanguageGroupString,
  1350.     lpLanguageGroupNameSting: LPSTR; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1351.   {$EXTERNALSYM LANGUAGEGROUP_ENUMPROC}
  1352.   LANGGROUPLOCALE_ENUMPROC = function (LanguageGroup: LGRPID; Locale: LCID;
  1353.     lpLocaleString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  1354.   {$EXTERNALSYM LANGGROUPLOCALE_ENUMPROC}
  1355.   UILANGUAGE_ENUMPROC = function (lpUILanguageString: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  1356.   {$EXTERNALSYM UILANGUAGE_ENUMPROC}
  1357.   LOCALE_ENUMPROC = function (lpLocaleString: LPSTR): BOOL; stdcall;
  1358.   {$EXTERNALSYM LOCALE_ENUMPROC}
  1359.   CODEPAGE_ENUMPROC = function (lpCodePAgeString: LPSTR): BOOL; stdcall;
  1360.   {$EXTERNALSYM CODEPAGE_ENUMPROC}
  1361.   DATEFMT_ENUMPROC = function (lpDateFormatString: LPSTR): BOOL; stdcall;
  1362.   {$EXTERNALSYM DATEFMT_ENUMPROC}
  1363.   DATEFMT_ENUMPROCEX = function (lpDateFormatString: LPSTR; CalenderId: CALID): BOOL; stdcall;
  1364.   {$EXTERNALSYM DATEFMT_ENUMPROCEX}
  1365.   TIMEFMT_ENUMPROC = function (lpTimeFormatString: LPSTR): BOOL; stdcall;
  1366.   {$EXTERNALSYM TIMEFMT_ENUMPROC}
  1367.   CALINFO_ENUMPROC = function (lpCalendarInfoString: LPSTR): BOOL; stdcall;
  1368.   {$EXTERNALSYM CALINFO_ENUMPROC}
  1369.   CALINFO_ENUMPROCEX = function (lpCalendarInfoString: LPSTR; Calendar: CALID): BOOL; stdcall;
  1370.   {$EXTERNALSYM CALINFO_ENUMPROCEX}
  1371. {$ENDIF}
  1372. ////////////////////////////////////////////////////////////////////////////
  1373. //
  1374. //  Macros
  1375. //
  1376. //  Define all macros for the NLS component here.
  1377. //
  1378. ////////////////////////////////////////////////////////////////////////////
  1379. ////////////////////////////////////////////////////////////////////////////
  1380. //
  1381. //  Function Prototypes
  1382. //
  1383. //  Only prototypes for the NLS APIs should go here.
  1384. //
  1385. ////////////////////////////////////////////////////////////////////////////
  1386. //
  1387. //  Code Page Dependent APIs.
  1388. //
  1389. function IsValidCodePage(CodePage: UINT): BOOL; stdcall;
  1390. {$EXTERNALSYM IsValidCodePage}
  1391. function GetACP: UINT; stdcall;
  1392. {$EXTERNALSYM GetACP}
  1393. function GetOEMCP: UINT; stdcall;
  1394. {$EXTERNALSYM GetOEMCP}
  1395. function GetCPInfo(CodePage: UINT; var lpCPInfo: CPINFO): BOOL; stdcall;
  1396. {$EXTERNALSYM GetCPInfo}
  1397. function GetCPInfoExA(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXA): BOOL; stdcall;
  1398. {$EXTERNALSYM GetCPInfoExA}
  1399. function GetCPInfoExW(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXW): BOOL; stdcall;
  1400. {$EXTERNALSYM GetCPInfoExW}
  1401. {$IFDEF UNICODE}
  1402. function GetCPInfoEx(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXW): BOOL; stdcall;
  1403. {$EXTERNALSYM GetCPInfoEx}
  1404. {$ELSE}
  1405. function GetCPInfoEx(CodePage: UINT; dwFlags: DWORD; var lpCPInfoEx: CPINFOEXA): BOOL; stdcall;
  1406. {$EXTERNALSYM GetCPInfoEx}
  1407. {$ENDIF}
  1408. function IsDBCSLeadByte(TestChar: BYTE): BOOL; stdcall;
  1409. {$EXTERNALSYM IsDBCSLeadByte}
  1410. function IsDBCSLeadByteEx(CodePage: UINT; TestChar: BYTE): BOOL; stdcall;
  1411. {$EXTERNALSYM IsDBCSLeadByteEx}
  1412. function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: LPCSTR;
  1413.   cbMultiByte: Integer; lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; stdcall;
  1414. {$EXTERNALSYM MultiByteToWideChar}
  1415. function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: LPCWSTR;
  1416.   cchWideChar: Integer; lpMultiByteStr: LPSTR; cbMultiByte: Integer;
  1417.   lpDefaultChar: LPCSTR; lpUsedDefaultChar: LPBOOL): Integer; stdcall;
  1418. {$EXTERNALSYM WideCharToMultiByte}
  1419. //
  1420. //  Locale Dependent APIs.
  1421. //
  1422. function CompareStringA(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCSTR;
  1423.   cchCount1: Integer; lpString2: LPCSTR; cchCount2: Integer): Integer; stdcall;
  1424. {$EXTERNALSYM CompareStringA}
  1425. function CompareStringW(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCWSTR;
  1426.   cchCount1: Integer; lpString2: LPCWSTR; cchCount2: Integer): Integer; stdcall;
  1427. {$EXTERNALSYM CompareStringW}
  1428. {$IFDEF UNICODE}
  1429. function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCWSTR;
  1430.   cchCount1: Integer; lpString2: LPCWSTR; cchCount2: Integer): Integer; stdcall;
  1431. {$EXTERNALSYM CompareString}
  1432. {$ELSE}
  1433. function CompareString(Locale: LCID; dwCmpFlags: DWORD; lpString1: LPCSTR;
  1434.   cchCount1: Integer; lpString2: LPCSTR; cchCount2: Integer): Integer; stdcall;
  1435. {$EXTERNALSYM CompareString}
  1436. {$ENDIF}
  1437. function LCMapStringA(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCSTR;
  1438.   cchSrc: Integer; lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
  1439. {$EXTERNALSYM LCMapStringA}
  1440. function LCMapStringW(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCWSTR;
  1441.   cchSrc: Integer; lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
  1442. {$EXTERNALSYM LCMapStringW}
  1443. {$IFDEF UNICODE}
  1444. function LCMapString(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCWSTR;
  1445.   cchSrc: Integer; lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
  1446. {$EXTERNALSYM LCMapString}
  1447. {$ELSE}
  1448. function LCMapString(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: LPCSTR;
  1449.   cchSrc: Integer; lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
  1450. {$EXTERNALSYM LCMapString}
  1451. {$ENDIF}
  1452. function GetLocaleInfoA(Locale: LCID; LCType: LCTYPE; lpLCData: LPSTR;
  1453.   cchData: Integer): Integer; stdcall;
  1454. {$EXTERNALSYM GetLocaleInfoA}
  1455. function GetLocaleInfoW(Locale: LCID; LCType: LCTYPE; lpLCData: LPWSTR;
  1456.   cchData: Integer): Integer; stdcall;
  1457. {$EXTERNALSYM GetLocaleInfoW}
  1458. {$IFDEF UNICODE}
  1459. function GetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPWSTR;
  1460.   cchData: Integer): Integer; stdcall;
  1461. {$EXTERNALSYM GetLocaleInfo}
  1462. {$ELSE}
  1463. function GetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPSTR;
  1464.   cchData: Integer): Integer; stdcall;
  1465. {$EXTERNALSYM GetLocaleInfo}
  1466. {$ENDIF}
  1467. function SetLocaleInfoA(Locale: LCID; LCType: LCTYPE; lpLCData: LPCSTR): BOOL; stdcall;
  1468. {$EXTERNALSYM SetLocaleInfoA}
  1469. function SetLocaleInfoW(Locale: LCID; LCType: LCTYPE; lpLCData: LPCWSTR): BOOL; stdcall;
  1470. {$EXTERNALSYM SetLocaleInfoW}
  1471. {$IFDEF UNICODE}
  1472. function SetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPCWSTR): BOOL; stdcall;
  1473. {$EXTERNALSYM SetLocaleInfo}
  1474. {$ELSE}
  1475. function SetLocaleInfo(Locale: LCID; LCType: LCTYPE; lpLCData: LPCSTR): BOOL; stdcall;
  1476. {$EXTERNALSYM SetLocaleInfo}
  1477. {$ENDIF}
  1478. function GetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1479.   lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
  1480. {$EXTERNALSYM GetCalendarInfoA}
  1481. function GetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1482.   lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
  1483. {$EXTERNALSYM GetCalendarInfoW}
  1484. {$IFDEF UNICODE}
  1485. function GetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1486.   lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
  1487. {$EXTERNALSYM GetCalendarInfo}
  1488. {$ELSE}
  1489. function GetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1490.   lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
  1491. {$EXTERNALSYM GetCalendarInfo}
  1492. {$ENDIF}
  1493. function SetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1494.   lpCalData: LPCSTR): BOOL; stdcall;
  1495. {$EXTERNALSYM SetCalendarInfoA}
  1496. function SetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1497.   lpCalData: LPCWSTR): BOOL; stdcall;
  1498. {$EXTERNALSYM SetCalendarInfoW}
  1499. {$IFDEF UNICODE}
  1500. function SetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1501.   lpCalData: LPCWSTR): BOOL; stdcall;
  1502. {$EXTERNALSYM SetCalendarInfo}
  1503. {$ELSE}
  1504. function SetCalendarInfo(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
  1505.   lpCalData: LPCSTR): BOOL; stdcall;
  1506. {$EXTERNALSYM SetCalendarInfo}
  1507. {$ENDIF}
  1508. function GetTimeFormatA(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
  1509.   lpFormat: LPCSTR; lpTimeStr: LPSTR; cchTime: Integer): Integer; stdcall;
  1510. {$EXTERNALSYM GetTimeFormatA}
  1511. function GetTimeFormatW(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
  1512.   lpFormat: LPCWSTR; lpTimeStr: LPWSTR; cchTime: Integer): Integer; stdcall;
  1513. {$EXTERNALSYM GetTimeFormatW}
  1514. {$IFDEF UNICODE}
  1515. function GetTimeFormat(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
  1516.   lpFormat: LPCWSTR; lpTimeStr: LPWSTR; cchTime: Integer): Integer; stdcall;
  1517. {$EXTERNALSYM GetTimeFormat}
  1518. {$ELSE}
  1519. function GetTimeFormat(Locale: LCID; dwFlags: DWORD; lpTime: LPSYSTEMTIME;
  1520.   lpFormat: LPCSTR; lpTimeStr: LPSTR; cchTime: Integer): Integer; stdcall;
  1521. {$EXTERNALSYM GetTimeFormat}
  1522. {$ENDIF}
  1523. function GetDateFormatA(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
  1524.   lpFormat: LPCSTR; lpDateStr: LPSTR; cchDate: Integer): Integer; stdcall;
  1525. {$EXTERNALSYM GetDateFormatA}
  1526. function GetDateFormatW(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
  1527.   lpFormat: LPCWSTR; lpDateStr: LPWSTR; cchDate: Integer): Integer; stdcall;
  1528. {$EXTERNALSYM GetDateFormatW}
  1529. {$IFDEF UNICODE}
  1530. function GetDateFormat(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
  1531.   lpFormat: LPCWSTR; lpDateStr: LPWSTR; cchDate: Integer): Integer; stdcall;
  1532. {$EXTERNALSYM GetDateFormat}
  1533. {$ELSE}
  1534. function GetDateFormat(Locale: LCID; dwFlags: DWORD; lpDate: LPSYSTEMTIME;
  1535.   lpFormat: LPCSTR; lpDateStr: LPSTR; cchDate: Integer): Integer; stdcall;
  1536. {$EXTERNALSYM GetDateFormat}
  1537. {$ENDIF}
  1538. function GetNumberFormatA(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
  1539.   lpFormat: LPNUMBERFMTA; lpNumberStr: LPSTR; cchNumber: Integer): Integer; stdcall;
  1540. {$EXTERNALSYM GetNumberFormatA}
  1541. function GetNumberFormatW(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
  1542.   lpFormat: LPNUMBERFMTW; lpNumberStr: LPWSTR; cchNumber: Integer): Integer; stdcall;
  1543. {$EXTERNALSYM GetNumberFormatW}
  1544. {$IFDEF UNICODE}
  1545. function GetNumberFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
  1546.   lpFormat: LPNUMBERFMTW; lpNumberStr: LPWSTR; cchNumber: Integer): Integer; stdcall;
  1547. {$EXTERNALSYM GetNumberFormat}
  1548. {$ELSE}
  1549. function GetNumberFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
  1550.   lpFormat: LPNUMBERFMTA; lpNumberStr: LPSTR; cchNumber: Integer): Integer; stdcall;
  1551. {$EXTERNALSYM GetNumberFormat}
  1552. {$ENDIF}
  1553. function GetCurrencyFormatA(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
  1554.   lpFormat: LPCURRENCYFMTA; lpCurrencyStr: LPSTR; cchCurrency: Integer): Integer; stdcall;
  1555. {$EXTERNALSYM GetCurrencyFormatA}
  1556. function GetCurrencyFormatW(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
  1557.   lpFormat: LPCURRENCYFMTW; lpCurrencyStr: LPWSTR; cchCurrency: Integer): Integer; stdcall;
  1558. {$EXTERNALSYM GetCurrencyFormatW}
  1559. {$IFDEF UNICODE}
  1560. function GetCurrencyFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCWSTR;
  1561.   lpFormat: LPCURRENCYFMTW; lpCurrencyStr: LPWSTR; cchCurrency: Integer): Integer; stdcall;
  1562. {$EXTERNALSYM GetCurrencyFormat}
  1563. {$ELSE}
  1564. function GetCurrencyFormat(Locale: LCID; dwFlags: DWORD; lpValue: LPCSTR;
  1565.   lpFormat: LPCURRENCYFMTA; lpCurrencyStr: LPSTR; cchCurrency: Integer): Integer; stdcall;
  1566. {$EXTERNALSYM GetCurrencyFormat}
  1567. {$ENDIF}
  1568. function EnumCalendarInfoA(lpCalInfoEnumProc: CALINFO_ENUMPROCA; Locale: LCID;
  1569.   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1570. {$EXTERNALSYM EnumCalendarInfoA}
  1571. function EnumCalendarInfoW(lpCalInfoEnumProc: CALINFO_ENUMPROCW; Locale: LCID;
  1572.   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1573. {$EXTERNALSYM EnumCalendarInfoW}
  1574. {$IFDEF UNICODE}
  1575. function EnumCalendarInfo(lpCalInfoEnumProc: CALINFO_ENUMPROCW; Locale: LCID;
  1576.   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1577. {$EXTERNALSYM EnumCalendarInfo}
  1578. {$ELSE}
  1579. function EnumCalendarInfo(lpCalInfoEnumProc: CALINFO_ENUMPROCA; Locale: LCID;
  1580.   Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1581. {$EXTERNALSYM EnumCalendarInfo}
  1582. {$ENDIF}
  1583. function EnumCalendarInfoExA(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA;
  1584.   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1585. {$EXTERNALSYM EnumCalendarInfoExA}
  1586. function EnumCalendarInfoExW(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
  1587.   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1588. {$EXTERNALSYM EnumCalendarInfoExW}
  1589. {$IFDEF UNICODE}
  1590. function EnumCalendarInfoEx(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
  1591.   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1592. {$EXTERNALSYM EnumCalendarInfoEx}
  1593. {$ELSE}
  1594. function EnumCalendarInfoEx(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA;
  1595.   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
  1596. {$EXTERNALSYM EnumCalendarInfoEx}
  1597. {$ENDIF}
  1598. function EnumTimeFormatsA(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA; Locale:
  1599.   LCID; dwFlags: DWORD): BOOL; stdcall;
  1600. {$EXTERNALSYM EnumTimeFormatsA}
  1601. function EnumTimeFormatsW(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW; Locale:
  1602.   LCID; dwFlags: DWORD): BOOL; stdcall;
  1603. {$EXTERNALSYM EnumTimeFormatsW}
  1604. {$IFDEF UNICODE}
  1605. function EnumTimeFormats(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW; Locale: LCID;
  1606.   dwFlags: DWORD): BOOL; stdcall;
  1607. {$EXTERNALSYM EnumTimeFormats}
  1608. {$ELSE}
  1609. function EnumTimeFormats(lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA; Locale: LCID;
  1610.   dwFlags: DWORD): BOOL; stdcall;
  1611. {$EXTERNALSYM EnumTimeFormats}
  1612. {$ENDIF}
  1613. function EnumDateFormatsA(lpDateFmtEnumProc: DATEFMT_ENUMPROCA; Locale: LCID;
  1614.   dwFlags: DWORD): BOOL; stdcall;
  1615. {$EXTERNALSYM EnumDateFormatsA}
  1616. function EnumDateFormatsW(lpDateFmtEnumProc: DATEFMT_ENUMPROCW; Locale: LCID;
  1617.   dwFlags: DWORD): BOOL; stdcall;
  1618. {$EXTERNALSYM EnumDateFormatsW}
  1619. {$IFDEF UNICODE}
  1620. function EnumDateFormats(lpDateFmtEnumProc: DATEFMT_ENUMPROCW; Locale: LCID;
  1621.   dwFlags: DWORD): BOOL; stdcall;
  1622. {$EXTERNALSYM EnumDateFormats}
  1623. {$ELSE}
  1624. function EnumDateFormats(lpDateFmtEnumProc: DATEFMT_ENUMPROCA; Locale: LCID;
  1625.   dwFlags: DWORD): BOOL; stdcall;
  1626. {$EXTERNALSYM EnumDateFormats}
  1627. {$ENDIF}
  1628. function EnumDateFormatsExA(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA;
  1629.   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
  1630. {$EXTERNALSYM EnumDateFormatsExA}
  1631. function EnumDateFormatsExW(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW;
  1632.   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
  1633. {$EXTERNALSYM EnumDateFormatsExW}
  1634. {$IFDEF UNICODE}
  1635. function EnumDateFormatsEx(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW;
  1636.   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
  1637. {$EXTERNALSYM EnumDateFormatsEx}
  1638. {$ELSE}
  1639. function EnumDateFormatsEx(lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA;
  1640.   Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
  1641. {$EXTERNALSYM EnumDateFormatsEx}
  1642. {$ENDIF}
  1643. function IsValidLanguageGroup(LanguageGroup: LGRPID; dwFlags: DWORD): BOOL; stdcall;
  1644. {$EXTERNALSYM IsValidLanguageGroup}
  1645. function GetNLSVersion(Function_: NLS_FUNCTION; Locale: LCID; lpVersionInformation: LPNLSVERSIONINFO): BOOL; stdcall;
  1646. {$EXTERNALSYM GetNLSVersion}
  1647. function IsNLSDefinedString(Function_: NLS_FUNCTION; dwFlags: DWORD; lpVersionInformation: LPNLSVERSIONINFO;
  1648.   lpString: LPCWSTR; cchStr: Integer): BOOL; stdcall;
  1649. {$EXTERNALSYM IsNLSDefinedString}
  1650. function IsValidLocale(Locale: LCID; dwFlags: DWORD): BOOL; stdcall;
  1651. {$EXTERNALSYM IsValidLocale}
  1652. function GetGeoInfoA(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPSTR;
  1653.   cchData: Integer; LangId: LANGID): Integer; stdcall;
  1654. {$EXTERNALSYM GetGeoInfoA}
  1655. function GetGeoInfoW(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPWSTR;
  1656.   cchData: Integer; LangId: LANGID): Integer; stdcall;
  1657. {$EXTERNALSYM GetGeoInfoW}
  1658. {$IFDEF UNICODE}
  1659. function GetGeoInfo(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPWSTR;
  1660.   cchData: Integer; LangId: LANGID): Integer; stdcall;
  1661. {$EXTERNALSYM GetGeoInfo}
  1662. {$ELSE}
  1663. function GetGeoInfo(Location: GEOID; GeoType: GEOTYPE; lpGeoData: LPSTR;
  1664.   cchData: Integer; LangId: LANGID): Integer; stdcall;
  1665. {$EXTERNALSYM GetGeoInfo}
  1666. {$ENDIF}
  1667. function EnumSystemGeoID(GeoClass: GEOCLASS; ParentGeoId: GEOID; lpGeoEnumProc: GEO_ENUMPROC): BOOL; stdcall;
  1668. {$EXTERNALSYM EnumSystemGeoID}
  1669. function GetUserGeoID(GeoClass: GEOCLASS): GEOID; stdcall;
  1670. {$EXTERNALSYM GetUserGeoID}
  1671. function SetUserGeoID(GeoId: GEOID): BOOL; stdcall;
  1672. {$EXTERNALSYM SetUserGeoID}
  1673. function ConvertDefaultLocale(Locale: LCID): LCID; stdcall;
  1674. {$EXTERNALSYM ConvertDefaultLocale}
  1675. function GetThreadLocale: LCID; stdcall;
  1676. {$EXTERNALSYM GetThreadLocale}
  1677. function SetThreadLocale(Locale: LCID): BOOL; stdcall;
  1678. {$EXTERNALSYM SetThreadLocale}
  1679. function GetSystemDefaultUILanguage: LANGID; stdcall;
  1680. {$EXTERNALSYM GetSystemDefaultUILanguage}
  1681. function GetUserDefaultUILanguage: LANGID; stdcall;
  1682. {$EXTERNALSYM GetUserDefaultUILanguage}
  1683. function GetSystemDefaultLangID: LANGID; stdcall;
  1684. {$EXTERNALSYM GetSystemDefaultLangID}
  1685. function GetUserDefaultLangID: LANGID; stdcall;
  1686. {$EXTERNALSYM GetUserDefaultLangID}
  1687. function GetSystemDefaultLCID: LCID; stdcall;
  1688. {$EXTERNALSYM GetSystemDefaultLCID}
  1689. function GetUserDefaultLCID: LCID; stdcall;
  1690. {$EXTERNALSYM GetUserDefaultLCID}
  1691. //
  1692. //  Locale Independent APIs.
  1693. //
  1694. function GetStringTypeExA(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCSTR;
  1695.   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
  1696. {$EXTERNALSYM GetStringTypeExA}
  1697. function GetStringTypeExW(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCWSTR;
  1698.   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
  1699. {$EXTERNALSYM GetStringTypeExW}
  1700. {$IFDEF UNICODE}
  1701. function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCWSTR;
  1702.   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
  1703. {$EXTERNALSYM GetStringTypeEx}
  1704. {$ELSE}
  1705. function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCSTR;
  1706.   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
  1707. {$EXTERNALSYM GetStringTypeEx}
  1708. {$ENDIF}
  1709. //
  1710. //  NOTE: The parameters for GetStringTypeA and GetStringTypeW are
  1711. //        NOT the same.  The W version was shipped in NT 3.1.  The
  1712. //        A version was then shipped in 16-bit OLE with the wrong
  1713. //        parameters (ported from Win95).  To be compatible, we
  1714. //        must break the relationship between the A and W versions
  1715. //        of GetStringType.  There will be NO function call for the
  1716. //        generic GetStringType.
  1717. //
  1718. //        GetStringTypeEx (above) should be used instead.
  1719. //
  1720. function GetStringTypeA(Locale: LCID; dwInfoType: DWORD; lpSrcStr: LPCSTR;
  1721.   cchSrc: Integer; lpCharType: LPWORD): BOOL; stdcall;
  1722. {$EXTERNALSYM GetStringTypeA}
  1723. function GetStringTypeW(dwInfoType: DWORD; lpSrcStr: LPCWSTR; cchSrc: Integer;
  1724.   lpCharType: LPWORD): BOOL; stdcall;
  1725. {$EXTERNALSYM GetStringTypeW}
  1726. function FoldStringA(dwMapFlags: DWORD; lpSrcStr: LPCSTR; cchSrc: Integer;
  1727.   lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
  1728. {$EXTERNALSYM FoldStringA}
  1729. function FoldStringW(dwMapFlags: DWORD; lpSrcStr: LPCWSTR; cchSrc: Integer;
  1730.   lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
  1731. {$EXTERNALSYM FoldStringW}
  1732. {$IFDEF UNICODE}
  1733. function FoldString(dwMapFlags: DWORD; lpSrcStr: LPCWSTR; cchSrc: Integer;
  1734.   lpDestStr: LPWSTR; cchDest: Integer): Integer; stdcall;
  1735. {$EXTERNALSYM FoldString}
  1736. {$ELSE}
  1737. function FoldString(dwMapFlags: DWORD; lpSrcStr: LPCSTR; cchSrc: Integer;
  1738.   lpDestStr: LPSTR; cchDest: Integer): Integer; stdcall;
  1739. {$EXTERNALSYM FoldString}
  1740. {$ENDIF}
  1741. function EnumSystemLanguageGroupsA(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA;
  1742.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1743. {$EXTERNALSYM EnumSystemLanguageGroupsA}
  1744. function EnumSystemLanguageGroupsW(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW;
  1745.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1746. {$EXTERNALSYM EnumSystemLanguageGroupsW}
  1747. {$IFDEF UNICODE}
  1748. function EnumSystemLanguageGroups(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW;
  1749.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1750. {$EXTERNALSYM EnumSystemLanguageGroups}
  1751. {$ELSE}
  1752. function EnumSystemLanguageGroups(lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA;
  1753.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1754. {$EXTERNALSYM EnumSystemLanguageGroups}
  1755. {$ENDIF}
  1756. function EnumLanguageGroupLocalesA(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA;
  1757.   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1758. {$EXTERNALSYM EnumLanguageGroupLocalesA}
  1759. function EnumLanguageGroupLocalesW(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW;
  1760.   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1761. {$EXTERNALSYM EnumLanguageGroupLocalesW}
  1762. {$IFDEF UNICODE}
  1763. function EnumLanguageGroupLocales(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW;
  1764.   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1765. {$EXTERNALSYM EnumLanguageGroupLocales}
  1766. {$ELSE}
  1767. function EnumLanguageGroupLocales(lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA;
  1768.   LanguageGroup: LGRPID; dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1769. {$EXTERNALSYM EnumLanguageGroupLocales}
  1770. {$ENDIF}
  1771. function EnumUILanguagesA(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA;
  1772.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1773. {$EXTERNALSYM EnumUILanguagesA}
  1774. function EnumUILanguagesW(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW;
  1775.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1776. {$EXTERNALSYM EnumUILanguagesW}
  1777. {$IFDEF UNICODE}
  1778. function EnumUILanguages(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW;
  1779.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1780. {$EXTERNALSYM EnumUILanguages}
  1781. {$ELSE}
  1782. function EnumUILanguages(lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA;
  1783.   dwFlags: DWORD; lParam: LONG_PTR): BOOL; stdcall;
  1784. {$EXTERNALSYM EnumUILanguages}
  1785. {$ENDIF}
  1786. function EnumSystemLocalesA(lpLocaleEnumProc: LOCALE_ENUMPROCA;
  1787.   dwFlags: DWORD): BOOL; stdcall;
  1788. {$EXTERNALSYM EnumSystemLocalesA}
  1789. function EnumSystemLocalesW(lpLocaleEnumProc: LOCALE_ENUMPROCW;
  1790.   dwFlags: DWORD): BOOL; stdcall;
  1791. {$EXTERNALSYM EnumSystemLocalesW}
  1792. {$IFDEF UNICODE}
  1793. function EnumSystemLocales(lpLocaleEnumProc: LOCALE_ENUMPROCW;
  1794.   dwFlags: DWORD): BOOL; stdcall;
  1795. {$EXTERNALSYM EnumSystemLocales}
  1796. {$ELSE}
  1797. function EnumSystemLocales(lpLocaleEnumProc: LOCALE_ENUMPROCA;
  1798.   dwFlags: DWORD): BOOL; stdcall;
  1799. {$EXTERNALSYM EnumSystemLocales}
  1800. {$ENDIF}
  1801. function EnumSystemCodePagesA(lpCodePageEnumProc: CODEPAGE_ENUMPROCA;
  1802.   dwFlags: DWORD): BOOL; stdcall;
  1803. {$EXTERNALSYM EnumSystemCodePagesA}
  1804. function EnumSystemCodePagesW(lpCodePageEnumProc: CODEPAGE_ENUMPROCW;
  1805.   dwFlags: DWORD): BOOL; stdcall;
  1806. {$EXTERNALSYM EnumSystemCodePagesW}
  1807. {$IFDEF UNICODE}
  1808. function EnumSystemCodePages(lpCodePageEnumProc: CODEPAGE_ENUMPROCW;
  1809.   dwFlags: DWORD): BOOL; stdcall;
  1810. {$EXTERNALSYM EnumSystemCodePages}
  1811. {$ELSE}
  1812. function EnumSystemCodePages(lpCodePageEnumProc: CODEPAGE_ENUMPROCA;
  1813.   dwFlags: DWORD): BOOL; stdcall;
  1814. {$EXTERNALSYM EnumSystemCodePages}
  1815. {$ENDIF}
  1816. implementation
  1817. const
  1818.  kernel32 = 'kernel32.dll';
  1819. {$IFDEF DYNAMIC_LINK}
  1820. var
  1821.   _IsValidCodePage: Pointer;
  1822. function IsValidCodePage;
  1823. begin
  1824.   GetProcedureAddress(_IsValidCodePage, kernel32, 'IsValidCodePage');
  1825.   asm
  1826.     mov esp, ebp
  1827.     pop ebp
  1828.     jmp [_IsValidCodePage]
  1829.   end;
  1830. end;
  1831. {$ELSE}
  1832. function IsValidCodePage; external kernel32 name 'IsValidCodePage';
  1833. {$ENDIF DYNAMIC_LINK}
  1834. {$IFDEF DYNAMIC_LINK}
  1835. var
  1836.   _GetACP: Pointer;
  1837. function GetACP;
  1838. begin
  1839.   GetProcedureAddress(_GetACP, kernel32, 'GetACP');
  1840.   asm
  1841.     mov esp, ebp
  1842.     pop ebp
  1843.     jmp [_GetACP]
  1844.   end;
  1845. end;
  1846. {$ELSE}
  1847. function GetACP; external kernel32 name 'GetACP';
  1848. {$ENDIF DYNAMIC_LINK}
  1849. {$IFDEF DYNAMIC_LINK}
  1850. var
  1851.   _GetOEMCP: Pointer;
  1852. function GetOEMCP;
  1853. begin
  1854.   GetProcedureAddress(_GetOEMCP, kernel32, 'GetOEMCP');
  1855.   asm
  1856.     mov esp, ebp
  1857.     pop ebp
  1858.     jmp [_GetOEMCP]
  1859.   end;
  1860. end;
  1861. {$ELSE}
  1862. function GetOEMCP; external kernel32 name 'GetOEMCP';
  1863. {$ENDIF DYNAMIC_LINK}
  1864. {$IFDEF DYNAMIC_LINK}
  1865. var
  1866.   _GetCPInfo: Pointer;
  1867. function GetCPInfo;
  1868. begin
  1869.   GetProcedureAddress(_GetCPInfo, kernel32, 'GetCPInfo');
  1870.   asm
  1871.     mov esp, ebp
  1872.     pop ebp
  1873.     jmp [_GetCPInfo]
  1874.   end;
  1875. end;
  1876. {$ELSE}
  1877. function GetCPInfo; external kernel32 name 'GetCPInfo';
  1878. {$ENDIF DYNAMIC_LINK}
  1879. {$IFDEF DYNAMIC_LINK}
  1880. var
  1881.   _GetCPInfoExA: Pointer;
  1882. function GetCPInfoExA;
  1883. begin
  1884.   GetProcedureAddress(_GetCPInfoExA, kernel32, 'GetCPInfoExA');
  1885.   asm
  1886.     mov esp, ebp
  1887.     pop ebp
  1888.     jmp [_GetCPInfoExA]
  1889.   end;
  1890. end;
  1891. {$ELSE}
  1892. function GetCPInfoExA; external kernel32 name 'GetCPInfoExA';
  1893. {$ENDIF DYNAMIC_LINK}
  1894. {$IFDEF DYNAMIC_LINK}
  1895. var
  1896.   _GetCPInfoExW: Pointer;
  1897. function GetCPInfoExW;
  1898. begin
  1899.   GetProcedureAddress(_GetCPInfoExW, kernel32, 'GetCPInfoExW');
  1900.   asm
  1901.     mov esp, ebp
  1902.     pop ebp
  1903.     jmp [_GetCPInfoExW]
  1904.   end;
  1905. end;
  1906. {$ELSE}
  1907. function GetCPInfoExW; external kernel32 name 'GetCPInfoExW';
  1908. {$ENDIF DYNAMIC_LINK}
  1909. {$IFDEF UNICODE}
  1910. {$IFDEF DYNAMIC_LINK}
  1911. var
  1912.   _GetCPInfoEx: Pointer;
  1913. function GetCPInfoEx;
  1914. begin
  1915.   GetProcedureAddress(_GetCPInfoEx, kernel32, 'GetCPInfoExW');
  1916.   asm
  1917.     mov esp, ebp
  1918.     pop ebp
  1919.     jmp [_GetCPInfoEx]
  1920.   end;
  1921. end;
  1922. {$ELSE}
  1923. function GetCPInfoEx; external kernel32 name 'GetCPInfoExW';
  1924. {$ENDIF DYNAMIC_LINK}
  1925. {$ELSE}
  1926. {$IFDEF DYNAMIC_LINK}
  1927. var
  1928.   _GetCPInfoEx: Pointer;
  1929. function GetCPInfoEx;
  1930. begin
  1931.   GetProcedureAddress(_GetCPInfoEx, kernel32, 'GetCPInfoExA');
  1932.   asm
  1933.     mov esp, ebp
  1934.     pop ebp
  1935.     jmp [_GetCPInfoEx]
  1936.   end;
  1937. end;
  1938. {$ELSE}
  1939. function GetCPInfoEx; external kernel32 name 'GetCPInfoExA';
  1940. {$ENDIF DYNAMIC_LINK}
  1941. {$ENDIF}
  1942. {$IFDEF DYNAMIC_LINK}
  1943. var
  1944.   _IsDBCSLeadByte: Pointer;
  1945. function IsDBCSLeadByte;
  1946. begin
  1947.   GetProcedureAddress(_IsDBCSLeadByte, kernel32, 'IsDBCSLeadByte');
  1948.   asm
  1949.     mov esp, ebp
  1950.     pop ebp
  1951.     jmp [_IsDBCSLeadByte]
  1952.   end;
  1953. end;
  1954. {$ELSE}
  1955. function IsDBCSLeadByte; external kernel32 name 'IsDBCSLeadByte';
  1956. {$ENDIF DYNAMIC_LINK}
  1957. {$IFDEF DYNAMIC_LINK}
  1958. var
  1959.   _IsDBCSLeadByteEx: Pointer;
  1960. function IsDBCSLeadByteEx;
  1961. begin
  1962.   GetProcedureAddress(_IsDBCSLeadByteEx, kernel32, 'IsDBCSLeadByteEx');
  1963.   asm
  1964.     mov esp, ebp
  1965.     pop ebp
  1966.     jmp [_IsDBCSLeadByteEx]
  1967.   end;
  1968. end;
  1969. {$ELSE}
  1970. function IsDBCSLeadByteEx; external kernel32 name 'IsDBCSLeadByteEx';
  1971. {$ENDIF DYNAMIC_LINK}
  1972. {$IFDEF DYNAMIC_LINK}
  1973. var
  1974.   _MultiByteToWideChar: Pointer;
  1975. function MultiByteToWideChar;
  1976. begin
  1977.   GetProcedureAddress(_MultiByteToWideChar, kernel32, 'MultiByteToWideChar');
  1978.   asm
  1979.     mov esp, ebp
  1980.     pop ebp
  1981.     jmp [_MultiByteToWideChar]
  1982.   end;
  1983. end;
  1984. {$ELSE}
  1985. function MultiByteToWideChar; external kernel32 name 'MultiByteToWideChar';
  1986. {$ENDIF DYNAMIC_LINK}
  1987. {$IFDEF DYNAMIC_LINK}
  1988. var
  1989.   _WideCharToMultiByte: Pointer;
  1990. function WideCharToMultiByte;
  1991. begin
  1992.   GetProcedureAddress(_WideCharToMultiByte, kernel32, 'WideCharToMultiByte');
  1993.   asm
  1994.     mov esp, ebp
  1995.     pop ebp
  1996.     jmp [_WideCharToMultiByte]
  1997.   end;
  1998. end;
  1999. {$ELSE}
  2000. function WideCharToMultiByte; external kernel32 name 'WideCharToMultiByte';
  2001. {$ENDIF DYNAMIC_LINK}
  2002. {$IFDEF DYNAMIC_LINK}
  2003. var
  2004.   _CompareStringA: Pointer;
  2005. function CompareStringA;
  2006. begin
  2007.   GetProcedureAddress(_CompareStringA, kernel32, 'CompareStringA');
  2008.   asm
  2009.     mov esp, ebp
  2010.     pop ebp
  2011.     jmp [_CompareStringA]
  2012.   end;
  2013. end;
  2014. {$ELSE}
  2015. function CompareStringA; external kernel32 name 'CompareStringA';
  2016. {$ENDIF DYNAMIC_LINK}
  2017. {$IFDEF DYNAMIC_LINK}
  2018. var
  2019.   _CompareStringW: Pointer;
  2020. function CompareStringW;
  2021. begin
  2022.   GetProcedureAddress(_CompareStringW, kernel32, 'CompareStringW');
  2023.   asm
  2024.     mov esp, ebp
  2025.     pop ebp
  2026.     jmp [_CompareStringW]
  2027.   end;
  2028. end;
  2029. {$ELSE}
  2030. function CompareStringW; external kernel32 name 'CompareStringW';
  2031. {$ENDIF DYNAMIC_LINK}
  2032. {$IFDEF UNICODE}
  2033. {$IFDEF DYNAMIC_LINK}
  2034. var
  2035.   _CompareString: Pointer;
  2036. function CompareString;
  2037. begin
  2038.   GetProcedureAddress(_CompareString, kernel32, 'CompareStringW');
  2039.   asm
  2040.     mov esp, ebp
  2041.     pop ebp
  2042.     jmp [_CompareString]
  2043.   end;
  2044. end;
  2045. {$ELSE}
  2046. function CompareString; external kernel32 name 'CompareStringW';
  2047. {$ENDIF DYNAMIC_LINK}
  2048. {$ELSE}
  2049. {$IFDEF DYNAMIC_LINK}
  2050. var
  2051.   _CompareString: Pointer;
  2052. function CompareString;
  2053. begin
  2054.   GetProcedureAddress(_CompareString, kernel32, 'CompareStringA');
  2055.   asm
  2056.     mov esp, ebp
  2057.     pop ebp
  2058.     jmp [_CompareString]
  2059.   end;
  2060. end;
  2061. {$ELSE}
  2062. function CompareString; external kernel32 name 'CompareStringA';
  2063. {$ENDIF DYNAMIC_LINK}
  2064. {$ENDIF}
  2065. {$IFDEF DYNAMIC_LINK}
  2066. var
  2067.   _LCMapStringA: Pointer;
  2068. function LCMapStringA;
  2069. begin
  2070.   GetProcedureAddress(_LCMapStringA, kernel32, 'LCMapStringA');
  2071.   asm
  2072.     mov esp, ebp
  2073.     pop ebp
  2074.     jmp [_LCMapStringA]
  2075.   end;
  2076. end;
  2077. {$ELSE}
  2078. function LCMapStringA; external kernel32 name 'LCMapStringA';
  2079. {$ENDIF DYNAMIC_LINK}
  2080. {$IFDEF DYNAMIC_LINK}
  2081. var
  2082.   _LCMapStringW: Pointer;
  2083. function LCMapStringW;
  2084. begin
  2085.   GetProcedureAddress(_LCMapStringW, kernel32, 'LCMapStringW');
  2086.   asm
  2087.     mov esp, ebp
  2088.     pop ebp
  2089.     jmp [_LCMapStringW]
  2090.   end;
  2091. end;
  2092. {$ELSE}
  2093. function LCMapStringW; external kernel32 name 'LCMapStringW';
  2094. {$ENDIF DYNAMIC_LINK}
  2095. {$IFDEF UNICODE}
  2096. {$IFDEF DYNAMIC_LINK}
  2097. var
  2098.   _LCMapString: Pointer;
  2099. function LCMapString;
  2100. begin
  2101.   GetProcedureAddress(_LCMapString, kernel32, 'LCMapStringW');
  2102.   asm
  2103.     mov esp, ebp
  2104.     pop ebp
  2105.     jmp [_LCMapString]
  2106.   end;
  2107. end;
  2108. {$ELSE}
  2109. function LCMapString; external kernel32 name 'LCMapStringW';
  2110. {$ENDIF DYNAMIC_LINK}
  2111. {$ELSE}
  2112. {$IFDEF DYNAMIC_LINK}
  2113. var
  2114.   _LCMapString: Pointer;
  2115. function LCMapString;
  2116. begin
  2117.   GetProcedureAddress(_LCMapString, kernel32, 'LCMapStringA');
  2118.   asm
  2119.     mov esp, ebp
  2120.     pop ebp
  2121.     jmp [_LCMapString]
  2122.   end;
  2123. end;
  2124. {$ELSE}
  2125. function LCMapString; external kernel32 name 'LCMapStringA';
  2126. {$ENDIF DYNAMIC_LINK}
  2127. {$ENDIF}
  2128. {$IFDEF DYNAMIC_LINK}
  2129. var
  2130.   _GetLocaleInfoA: Pointer;
  2131. function GetLocaleInfoA;
  2132. begin
  2133.   GetProcedureAddress(_GetLocaleInfoA, kernel32, 'GetLocaleInfoA');
  2134.   asm
  2135.     mov esp, ebp
  2136.     pop ebp
  2137.     jmp [_GetLocaleInfoA]
  2138.   end;
  2139. end;
  2140. {$ELSE}
  2141. function GetLocaleInfoA; external kernel32 name 'GetLocaleInfoA';
  2142. {$ENDIF DYNAMIC_LINK}
  2143. {$IFDEF DYNAMIC_LINK}
  2144. var
  2145.   _GetLocaleInfoW: Pointer;
  2146. function GetLocaleInfoW;
  2147. begin
  2148.   GetProcedureAddress(_GetLocaleInfoW, kernel32, 'GetLocaleInfoW');
  2149.   asm
  2150.     mov esp, ebp
  2151.     pop ebp
  2152.     jmp [_GetLocaleInfoW]
  2153.   end;
  2154. end;
  2155. {$ELSE}
  2156. function GetLocaleInfoW; external kernel32 name 'GetLocaleInfoW';
  2157. {$ENDIF DYNAMIC_LINK}
  2158. {$IFDEF UNICODE}
  2159. {$IFDEF DYNAMIC_LINK}
  2160. var
  2161.   _GetLocaleInfo: Pointer;
  2162. function GetLocaleInfo;
  2163. begin
  2164.   GetProcedureAddress(_GetLocaleInfo, kernel32, 'GetLocaleInfoW');
  2165.   asm
  2166.     mov esp, ebp
  2167.     pop ebp
  2168.     jmp [_GetLocaleInfo]
  2169.   end;
  2170. end;
  2171. {$ELSE}
  2172. function GetLocaleInfo; external kernel32 name 'GetLocaleInfoW';
  2173. {$ENDIF DYNAMIC_LINK}
  2174. {$ELSE}
  2175. {$IFDEF DYNAMIC_LINK}
  2176. var
  2177.   _GetLocaleInfo: Pointer;
  2178. function GetLocaleInfo;
  2179. begin
  2180.   GetProcedureAddress(_GetLocaleInfo, kernel32, 'GetLocaleInfoA');
  2181.   asm
  2182.     mov esp, ebp
  2183.     pop ebp
  2184.     jmp [_GetLocaleInfo]
  2185.   end;
  2186. end;
  2187. {$ELSE}
  2188. function GetLocaleInfo; external kernel32 name 'GetLocaleInfoA';
  2189. {$ENDIF DYNAMIC_LINK}
  2190. {$ENDIF}
  2191. {$IFDEF DYNAMIC_LINK}
  2192. var
  2193.   _SetLocaleInfoA: Pointer;
  2194. function SetLocaleInfoA;
  2195. begin
  2196.   GetProcedureAddress(_SetLocaleInfoA, kernel32, 'SetLocaleInfoA');
  2197.   asm
  2198.     mov esp, ebp
  2199.     pop ebp
  2200.     jmp [_SetLocaleInfoA]
  2201.   end;
  2202. end;
  2203. {$ELSE}
  2204. function SetLocaleInfoA; external kernel32 name 'SetLocaleInfoA';
  2205. {$ENDIF DYNAMIC_LINK}
  2206. {$IFDEF DYNAMIC_LINK}
  2207. var
  2208.   _SetLocaleInfoW: Pointer;
  2209. function SetLocaleInfoW;
  2210. begin
  2211.   GetProcedureAddress(_SetLocaleInfoW, kernel32, 'SetLocaleInfoW');
  2212.   asm
  2213.     mov esp, ebp
  2214.     pop ebp
  2215.     jmp [_SetLocaleInfoW]
  2216.   end;
  2217. end;
  2218. {$ELSE}
  2219. function SetLocaleInfoW; external kernel32 name 'SetLocaleInfoW';
  2220. {$ENDIF DYNAMIC_LINK}
  2221. {$IFDEF UNICODE}
  2222. {$IFDEF DYNAMIC_LINK}
  2223. var
  2224.   _SetLocaleInfo: Pointer;
  2225. function SetLocaleInfo;
  2226. begin
  2227.   GetProcedureAddress(_SetLocaleInfo, kernel32, 'SetLocaleInfoW');
  2228.   asm
  2229.     mov esp, ebp
  2230.     pop ebp
  2231.     jmp [_SetLocaleInfo]
  2232.   end;
  2233. end;
  2234. {$ELSE}
  2235. function SetLocaleInfo; external kernel32 name 'SetLocaleInfoW';
  2236. {$ENDIF DYNAMIC_LINK}
  2237. {$ELSE}
  2238. {$IFDEF DYNAMIC_LINK}
  2239. var
  2240.   _SetLocaleInfo: Pointer;
  2241. function SetLocaleInfo;
  2242. begin
  2243.   GetProcedureAddress(_SetLocaleInfo, kernel32, 'SetLocaleInfoA');
  2244.   asm
  2245.     mov esp, ebp
  2246.     pop ebp
  2247.     jmp [_SetLocaleInfo]
  2248.   end;
  2249. end;
  2250. {$ELSE}
  2251. function SetLocaleInfo; external kernel32 name 'SetLocaleInfoA';
  2252. {$ENDIF DYNAMIC_LINK}
  2253. {$ENDIF}
  2254. {$IFDEF DYNAMIC_LINK}
  2255. var
  2256.   _GetCalendarInfoA: Pointer;
  2257. function GetCalendarInfoA;
  2258. begin
  2259.   GetProcedureAddress(_GetCalendarInfoA, kernel32, 'GetCalendarInfoA');
  2260.   asm
  2261.     mov esp, ebp
  2262.     pop ebp
  2263.     jmp [_GetCalendarInfoA]
  2264.   end;
  2265. end;
  2266. {$ELSE}
  2267. function GetCalendarInfoA; external kernel32 name 'GetCalendarInfoA';
  2268. {$ENDIF DYNAMIC_LINK}
  2269. {$IFDEF DYNAMIC_LINK}
  2270. var
  2271.   _GetCalendarInfoW: Pointer;
  2272. function GetCalendarInfoW;
  2273. begin
  2274.   GetProcedureAddress(_GetCalendarInfoW, kernel32, 'GetCalendarInfoW');
  2275.   asm
  2276.     mov esp, ebp
  2277.     pop ebp
  2278.     jmp [_GetCalendarInfoW]
  2279.   end;
  2280. end;
  2281. {$ELSE}
  2282. function GetCalendarInfoW; external kernel32 name 'GetCalendarInfoW';
  2283. {$ENDIF DYNAMIC_LINK}
  2284. {$IFDEF UNICODE}
  2285. {$IFDEF DYNAMIC_LINK}
  2286. var
  2287.   _GetCalendarInfo: Pointer;
  2288. function GetCalendarInfo;
  2289. begin
  2290.   GetProcedureAddress(_GetCalendarInfo, kernel32, 'GetCalendarInfoW');
  2291.   asm
  2292.     mov esp, ebp
  2293.     pop ebp
  2294.     jmp [_GetCalendarInfo]
  2295.   end;
  2296. end;
  2297. {$ELSE}
  2298. function GetCalendarInfo; external kernel32 name 'GetCalendarInfoW';
  2299. {$ENDIF DYNAMIC_LINK}
  2300. {$ELSE}
  2301. {$IFDEF DYNAMIC_LINK}
  2302. var
  2303.   _GetCalendarInfo: Pointer;
  2304. function GetCalendarInfo;
  2305. begin
  2306.   GetProcedureAddress(_GetCalendarInfo, kernel32, 'GetCalendarInfoA');
  2307.   asm
  2308.     mov esp, ebp
  2309.     pop ebp
  2310.     jmp [_GetCalendarInfo]
  2311.   end;
  2312. end;
  2313. {$ELSE}
  2314. function GetCalendarInfo; external kernel32 name 'GetCalendarInfoA';
  2315. {$ENDIF DYNAMIC_LINK}
  2316. {$ENDIF}
  2317. {$IFDEF DYNAMIC_LINK}
  2318. var
  2319.   _SetCalendarInfoA: Pointer;
  2320. function SetCalendarInfoA;
  2321. begin
  2322.   GetProcedureAddress(_SetCalendarInfoA, kernel32, 'SetCalendarInfoA');
  2323.   asm
  2324.     mov esp, ebp
  2325.     pop ebp
  2326.     jmp [_SetCalendarInfoA]
  2327.   end;
  2328. end;
  2329. {$ELSE}
  2330. function SetCalendarInfoA; external kernel32 name 'SetCalendarInfoA';
  2331. {$ENDIF DYNAMIC_LINK}
  2332. {$IFDEF DYNAMIC_LINK}
  2333. var
  2334.   _SetCalendarInfoW: Pointer;
  2335. function SetCalendarInfoW;
  2336. begin
  2337.   GetProcedureAddress(_SetCalendarInfoW, kernel32, 'SetCalendarInfoW');
  2338.   asm
  2339.     mov esp, ebp
  2340.     pop ebp
  2341.     jmp [_SetCalendarInfoW]
  2342.   end;
  2343. end;
  2344. {$ELSE}
  2345. function SetCalendarInfoW; external kernel32 name 'SetCalendarInfoW';
  2346. {$ENDIF DYNAMIC_LINK}
  2347. {$IFDEF UNICODE}
  2348. {$IFDEF DYNAMIC_LINK}
  2349. var
  2350.   _SetCalendarInfo: Pointer;
  2351. function SetCalendarInfo;
  2352. begin
  2353.   GetProcedureAddress(_SetCalendarInfo, kernel32, 'SetCalendarInfoW');
  2354.   asm
  2355.     mov esp, ebp
  2356.     pop ebp
  2357.     jmp [_SetCalendarInfo]
  2358.   end;
  2359. end;
  2360. {$ELSE}
  2361. function SetCalendarInfo; external kernel32 name 'SetCalendarInfoW';
  2362. {$ENDIF DYNAMIC_LINK}
  2363. {$ELSE}
  2364. {$IFDEF DYNAMIC_LINK}
  2365. var
  2366.   _SetCalendarInfo: Pointer;
  2367. function SetCalendarInfo;
  2368. begin
  2369.   GetProcedureAddress(_SetCalendarInfo, kernel32, 'SetCalendarInfoA');
  2370.   asm
  2371.     mov esp, ebp
  2372.     pop ebp
  2373.     jmp [_SetCalendarInfo]
  2374.   end;
  2375. end;
  2376. {$ELSE}
  2377. function SetCalendarInfo; external kernel32 name 'SetCalendarInfoA';
  2378. {$ENDIF DYNAMIC_LINK}
  2379. {$ENDIF}
  2380. {$IFDEF DYNAMIC_LINK}
  2381. var
  2382.   _GetTimeFormatA: Pointer;
  2383. function GetTimeFormatA;
  2384. begin
  2385.   GetProcedureAddress(_GetTimeFormatA, kernel32, 'GetTimeFormatA');
  2386.   asm
  2387.     mov esp, ebp
  2388.     pop ebp
  2389.     jmp [_GetTimeFormatA]
  2390.   end;
  2391. end;
  2392. {$ELSE}
  2393. function GetTimeFormatA; external kernel32 name 'GetTimeFormatA';
  2394. {$ENDIF DYNAMIC_LINK}
  2395. {$IFDEF DYNAMIC_LINK}
  2396. var
  2397.   _GetTimeFormatW: Pointer;
  2398. function GetTimeFormatW;
  2399. begin
  2400.   GetProcedureAddress(_GetTimeFormatW, kernel32, 'GetTimeFormatW');
  2401.   asm
  2402.     mov esp, ebp
  2403.     pop ebp
  2404.     jmp [_GetTimeFormatW]
  2405.   end;
  2406. end;
  2407. {$ELSE}
  2408. function GetTimeFormatW; external kernel32 name 'GetTimeFormatW';
  2409. {$ENDIF DYNAMIC_LINK}
  2410. {$IFDEF UNICODE}
  2411. {$IFDEF DYNAMIC_LINK}
  2412. var
  2413.   _GetTimeFormat: Pointer;
  2414. function GetTimeFormat;
  2415. begin
  2416.   GetProcedureAddress(_GetTimeFormat, kernel32, 'GetTimeFormatW');
  2417.   asm
  2418.     mov esp, ebp
  2419.     pop ebp
  2420.     jmp [_GetTimeFormat]
  2421.   end;
  2422. end;
  2423. {$ELSE}
  2424. function GetTimeFormat; external kernel32 name 'GetTimeFormatW';
  2425. {$ENDIF DYNAMIC_LINK}
  2426. {$ELSE}
  2427. {$IFDEF DYNAMIC_LINK}
  2428. var
  2429.   _GetTimeFormat: Pointer;
  2430. function GetTimeFormat;
  2431. begin
  2432.   GetProcedureAddress(_GetTimeFormat, kernel32, 'GetTimeFormatA');
  2433.   asm
  2434.     mov esp, ebp
  2435.     pop ebp
  2436.     jmp [_GetTimeFormat]
  2437.   end;
  2438. end;
  2439. {$ELSE}
  2440. function GetTimeFormat; external kernel32 name 'GetTimeFormatA';
  2441. {$ENDIF DYNAMIC_LINK}
  2442. {$ENDIF}
  2443. {$IFDEF DYNAMIC_LINK}
  2444. var
  2445.   _GetDateFormatA: Pointer;
  2446. function GetDateFormatA;
  2447. begin
  2448.   GetProcedureAddress(_GetDateFormatA, kernel32, 'GetDateFormatA');
  2449.   asm
  2450.     mov esp, ebp
  2451.     pop ebp
  2452.     jmp [_GetDateFormatA]
  2453.   end;
  2454. end;
  2455. {$ELSE}
  2456. function GetDateFormatA; external kernel32 name 'GetDateFormatA';
  2457. {$ENDIF DYNAMIC_LINK}
  2458. {$IFDEF DYNAMIC_LINK}
  2459. var
  2460.   _GetDateFormatW: Pointer;
  2461. function GetDateFormatW;
  2462. begin
  2463.   GetProcedureAddress(_GetDateFormatW, kernel32, 'GetDateFormatW');
  2464.   asm
  2465.     mov esp, ebp
  2466.     pop ebp
  2467.     jmp [_GetDateFormatW]
  2468.   end;
  2469. end;
  2470. {$ELSE}
  2471. function GetDateFormatW; external kernel32 name 'GetDateFormatW';
  2472. {$ENDIF DYNAMIC_LINK}
  2473. {$IFDEF UNICODE}
  2474. {$IFDEF DYNAMIC_LINK}
  2475. var
  2476.   _GetDateFormat: Pointer;
  2477. function GetDateFormat;
  2478. begin
  2479.   GetProcedureAddress(_GetDateFormat, kernel32, 'GetDateFormatW');
  2480.   asm
  2481.     mov esp, ebp
  2482.     pop ebp
  2483.     jmp [_GetDateFormat]
  2484.   end;
  2485. end;
  2486. {$ELSE}
  2487. function GetDateFormat; external kernel32 name 'GetDateFormatW';
  2488. {$ENDIF DYNAMIC_LINK}
  2489. {$ELSE}
  2490. {$IFDEF DYNAMIC_LINK}
  2491. var
  2492.   _GetDateFormat: Pointer;
  2493. function GetDateFormat;
  2494. begin
  2495.   GetProcedureAddress(_GetDateFormat, kernel32, 'GetDateFormatA');
  2496.   asm
  2497.     mov esp, ebp
  2498.     pop ebp
  2499.     jmp [_GetDateFormat]
  2500.   end;
  2501. end;
  2502. {$ELSE}
  2503. function GetDateFormat; external kernel32 name 'GetDateFormatA';
  2504. {$ENDIF DYNAMIC_LINK}
  2505. {$ENDIF}
  2506. {$IFDEF DYNAMIC_LINK}
  2507. var
  2508.   _GetNumberFormatA: Pointer;
  2509. function GetNumberFormatA;
  2510. begin
  2511.   GetProcedureAddress(_GetNumberFormatA, kernel32, 'GetNumberFormatA');
  2512.   asm
  2513.     mov esp, ebp
  2514.     pop ebp
  2515.     jmp [_GetNumberFormatA]
  2516.   end;
  2517. end;
  2518. {$ELSE}
  2519. function GetNumberFormatA; external kernel32 name 'GetNumberFormatA';
  2520. {$ENDIF DYNAMIC_LINK}
  2521. {$IFDEF DYNAMIC_LINK}
  2522. var
  2523.   _GetNumberFormatW: Pointer;
  2524. function GetNumberFormatW;
  2525. begin
  2526.   GetProcedureAddress(_GetNumberFormatW, kernel32, 'GetNumberFormatW');
  2527.   asm
  2528.     mov esp, ebp
  2529.     pop ebp
  2530.     jmp [_GetNumberFormatW]
  2531.   end;
  2532. end;
  2533. {$ELSE}
  2534. function GetNumberFormatW; external kernel32 name 'GetNumberFormatW';
  2535. {$ENDIF DYNAMIC_LINK}
  2536. {$IFDEF UNICODE}
  2537. {$IFDEF DYNAMIC_LINK}
  2538. var
  2539.   _GetNumberFormat: Pointer;
  2540. function GetNumberFormat;
  2541. begin
  2542.   GetProcedureAddress(_GetNumberFormat, kernel32, 'GetNumberFormatW');
  2543.   asm
  2544.     mov esp, ebp
  2545.     pop ebp
  2546.     jmp [_GetNumberFormat]
  2547.   end;
  2548. end;
  2549. {$ELSE}
  2550. function GetNumberFormat; external kernel32 name 'GetNumberFormatW';
  2551. {$ENDIF DYNAMIC_LINK}
  2552. {$ELSE}
  2553. {$IFDEF DYNAMIC_LINK}
  2554. var
  2555.   _GetNumberFormat: Pointer;
  2556. function GetNumberFormat;
  2557. begin
  2558.   GetProcedureAddress(_GetNumberFormat, kernel32, 'GetNumberFormatA');
  2559.   asm
  2560.     mov esp, ebp
  2561.     pop ebp
  2562.     jmp [_GetNumberFormat]
  2563.   end;
  2564. end;
  2565. {$ELSE}
  2566. function GetNumberFormat; external kernel32 name 'GetNumberFormatA';
  2567. {$ENDIF DYNAMIC_LINK}
  2568. {$ENDIF}
  2569. {$IFDEF DYNAMIC_LINK}
  2570. var
  2571.   _GetCurrencyFormatA: Pointer;
  2572. function GetCurrencyFormatA;
  2573. begin
  2574.   GetProcedureAddress(_GetCurrencyFormatA, kernel32, 'GetCurrencyFormatA');
  2575.   asm
  2576.     mov esp, ebp
  2577.     pop ebp
  2578.     jmp [_GetCurrencyFormatA]
  2579.   end;
  2580. end;
  2581. {$ELSE}
  2582. function GetCurrencyFormatA; external kernel32 name 'GetCurrencyFormatA';
  2583. {$ENDIF DYNAMIC_LINK}
  2584. {$IFDEF DYNAMIC_LINK}
  2585. var
  2586.   _GetCurrencyFormatW: Pointer;
  2587. function GetCurrencyFormatW;
  2588. begin
  2589.   GetProcedureAddress(_GetCurrencyFormatW, kernel32, 'GetCurrencyFormatW');
  2590.   asm
  2591.     mov esp, ebp
  2592.     pop ebp
  2593.     jmp [_GetCurrencyFormatW]
  2594.   end;
  2595. end;
  2596. {$ELSE}
  2597. function GetCurrencyFormatW; external kernel32 name 'GetCurrencyFormatW';
  2598. {$ENDIF DYNAMIC_LINK}
  2599. {$IFDEF UNICODE}
  2600. {$IFDEF DYNAMIC_LINK}
  2601. var
  2602.   _GetCurrencyFormat: Pointer;
  2603. function GetCurrencyFormat;
  2604. begin
  2605.   GetProcedureAddress(_GetCurrencyFormat, kernel32, 'GetCurrencyFormatW');
  2606.   asm
  2607.     mov esp, ebp
  2608.     pop ebp
  2609.     jmp [_GetCurrencyFormat]
  2610.   end;
  2611. end;
  2612. {$ELSE}
  2613. function GetCurrencyFormat; external kernel32 name 'GetCurrencyFormatW';
  2614. {$ENDIF DYNAMIC_LINK}
  2615. {$ELSE}
  2616. {$IFDEF DYNAMIC_LINK}
  2617. var
  2618.   _GetCurrencyFormat: Pointer;
  2619. function GetCurrencyFormat;
  2620. begin
  2621.   GetProcedureAddress(_GetCurrencyFormat, kernel32, 'GetCurrencyFormatA');
  2622.   asm
  2623.     mov esp, ebp
  2624.     pop ebp
  2625.     jmp [_GetCurrencyFormat]
  2626.   end;
  2627. end;
  2628. {$ELSE}
  2629. function GetCurrencyFormat; external kernel32 name 'GetCurrencyFormatA';
  2630. {$ENDIF DYNAMIC_LINK}
  2631. {$ENDIF}
  2632. {$IFDEF DYNAMIC_LINK}
  2633. var
  2634.   _EnumCalendarInfoA: Pointer;
  2635. function EnumCalendarInfoA;
  2636. begin
  2637.   GetProcedureAddress(_EnumCalendarInfoA, kernel32, 'EnumCalendarInfoA');
  2638.   asm
  2639.     mov esp, ebp
  2640.     pop ebp
  2641.     jmp [_EnumCalendarInfoA]
  2642.   end;
  2643. end;
  2644. {$ELSE}
  2645. function EnumCalendarInfoA; external kernel32 name 'EnumCalendarInfoA';
  2646. {$ENDIF DYNAMIC_LINK}
  2647. {$IFDEF DYNAMIC_LINK}
  2648. var
  2649.   _EnumCalendarInfoW: Pointer;
  2650. function EnumCalendarInfoW;
  2651. begin
  2652.   GetProcedureAddress(_EnumCalendarInfoW, kernel32, 'EnumCalendarInfoW');
  2653.   asm
  2654.     mov esp, ebp
  2655.     pop ebp
  2656.     jmp [_EnumCalendarInfoW]
  2657.   end;
  2658. end;
  2659. {$ELSE}
  2660. function EnumCalendarInfoW; external kernel32 name 'EnumCalendarInfoW';
  2661. {$ENDIF DYNAMIC_LINK}
  2662. {$IFDEF UNICODE}
  2663. {$IFDEF DYNAMIC_LINK}
  2664. var
  2665.   _EnumCalendarInfo: Pointer;
  2666. function EnumCalendarInfo;
  2667. begin
  2668.   GetProcedureAddress(_EnumCalendarInfo, kernel32, 'EnumCalendarInfoW');
  2669.   asm
  2670.     mov esp, ebp
  2671.     pop ebp
  2672.     jmp [_EnumCalendarInfo]
  2673.   end;
  2674. end;
  2675. {$ELSE}
  2676. function EnumCalendarInfo; external kernel32 name 'EnumCalendarInfoW';
  2677. {$ENDIF DYNAMIC_LINK}
  2678. {$ELSE}
  2679. {$IFDEF DYNAMIC_LINK}
  2680. var
  2681.   _EnumCalendarInfo: Pointer;
  2682. function EnumCalendarInfo;
  2683. begin
  2684.   GetProcedureAddress(_EnumCalendarInfo, kernel32, 'EnumCalendarInfoA');
  2685.   asm
  2686.     mov esp, ebp
  2687.     pop ebp
  2688.     jmp [_EnumCalendarInfo]
  2689.   end;
  2690. end;
  2691. {$ELSE}
  2692. function EnumCalendarInfo; external kernel32 name 'EnumCalendarInfoA';
  2693. {$ENDIF DYNAMIC_LINK}
  2694. {$ENDIF}
  2695. {$IFDEF DYNAMIC_LINK}
  2696. var
  2697.   _EnumCalendarInfoExA: Pointer;
  2698. function EnumCalendarInfoExA;
  2699. begin
  2700.   GetProcedureAddress(_EnumCalendarInfoExA, kernel32, 'EnumCalendarInfoExA');
  2701.   asm
  2702.     mov esp, ebp
  2703.     pop ebp
  2704.     jmp [_EnumCalendarInfoExA]
  2705.   end;
  2706. end;
  2707. {$ELSE}
  2708. function EnumCalendarInfoExA; external kernel32 name 'EnumCalendarInfoExA';
  2709. {$ENDIF DYNAMIC_LINK}
  2710. {$IFDEF DYNAMIC_LINK}
  2711. var
  2712.   _EnumCalendarInfoExW: Pointer;
  2713. function EnumCalendarInfoExW;
  2714. begin
  2715.   GetProcedureAddress(_EnumCalendarInfoExW, kernel32, 'EnumCalendarInfoExW');
  2716.   asm
  2717.     mov esp, ebp
  2718.     pop ebp
  2719.     jmp [_EnumCalendarInfoExW]
  2720.   end;
  2721. end;
  2722. {$ELSE}
  2723. function EnumCalendarInfoExW; external kernel32 name 'EnumCalendarInfoExW';
  2724. {$ENDIF DYNAMIC_LINK}
  2725. {$IFDEF UNICODE}
  2726. {$IFDEF DYNAMIC_LINK}
  2727. var
  2728.   _EnumCalendarInfoEx: Pointer;
  2729. function EnumCalendarInfoEx;
  2730. begin
  2731.   GetProcedureAddress(_EnumCalendarInfoEx, kernel32, 'EnumCalendarInfoExW');
  2732.   asm
  2733.     mov esp, ebp
  2734.     pop ebp
  2735.     jmp [_EnumCalendarInfoEx]
  2736.   end;
  2737. end;
  2738. {$ELSE}
  2739. function EnumCalendarInfoEx; external kernel32 name 'EnumCalendarInfoExW';
  2740. {$ENDIF DYNAMIC_LINK}
  2741. {$ELSE}
  2742. {$IFDEF DYNAMIC_LINK}
  2743. var
  2744.   _EnumCalendarInfoEx: Pointer;
  2745. function EnumCalendarInfoEx;
  2746. begin
  2747.   GetProcedureAddress(_EnumCalendarInfoEx, kernel32, 'EnumCalendarInfoExA');
  2748.   asm
  2749.     mov esp, ebp
  2750.     pop ebp
  2751.     jmp [_EnumCalendarInfoEx]
  2752.   end;
  2753. end;
  2754. {$ELSE}
  2755. function EnumCalendarInfoEx; external kernel32 name 'EnumCalendarInfoExA';
  2756. {$ENDIF DYNAMIC_LINK}
  2757. {$ENDIF}
  2758. {$IFDEF DYNAMIC_LINK}
  2759. var
  2760.   _EnumTimeFormatsA: Pointer;
  2761. function EnumTimeFormatsA;
  2762. begin
  2763.   GetProcedureAddress(_EnumTimeFormatsA, kernel32, 'EnumTimeFormatsA');
  2764.   asm
  2765.     mov esp, ebp
  2766.     pop ebp
  2767.     jmp [_EnumTimeFormatsA]
  2768.   end;
  2769. end;
  2770. {$ELSE}
  2771. function EnumTimeFormatsA; external kernel32 name 'EnumTimeFormatsA';
  2772. {$ENDIF DYNAMIC_LINK}
  2773. {$IFDEF DYNAMIC_LINK}
  2774. var
  2775.   _EnumTimeFormatsW: Pointer;
  2776. function EnumTimeFormatsW;
  2777. begin
  2778.   GetProcedureAddress(_EnumTimeFormatsW, kernel32, 'EnumTimeFormatsW');
  2779.   asm
  2780.     mov esp, ebp
  2781.     pop ebp
  2782.     jmp [_EnumTimeFormatsW]
  2783.   end;
  2784. end;
  2785. {$ELSE}
  2786. function EnumTimeFormatsW; external kernel32 name 'EnumTimeFormatsW';
  2787. {$ENDIF DYNAMIC_LINK}
  2788. {$IFDEF UNICODE}
  2789. {$IFDEF DYNAMIC_LINK}
  2790. var
  2791.   _EnumTimeFormats: Pointer;
  2792. function EnumTimeFormats;
  2793. begin
  2794.   GetProcedureAddress(_EnumTimeFormats, kernel32, 'EnumTimeFormatsW');
  2795.   asm
  2796.     mov esp, ebp
  2797.     pop ebp
  2798.     jmp [_EnumTimeFormats]
  2799.   end;
  2800. end;
  2801. {$ELSE}
  2802. function EnumTimeFormats; external kernel32 name 'EnumTimeFormatsW';
  2803. {$ENDIF DYNAMIC_LINK}
  2804. {$ELSE}
  2805. {$IFDEF DYNAMIC_LINK}
  2806. var
  2807.   _EnumTimeFormats: Pointer;
  2808. function EnumTimeFormats;
  2809. begin
  2810.   GetProcedureAddress(_EnumTimeFormats, kernel32, 'EnumTimeFormatsA');
  2811.   asm
  2812.     mov esp, ebp
  2813.     pop ebp
  2814.     jmp [_EnumTimeFormats]
  2815.   end;
  2816. end;
  2817. {$ELSE}
  2818. function EnumTimeFormats; external kernel32 name 'EnumTimeFormatsA';
  2819. {$ENDIF DYNAMIC_LINK}
  2820. {$ENDIF}
  2821. {$IFDEF DYNAMIC_LINK}
  2822. var
  2823.   _EnumDateFormatsA: Pointer;
  2824. function EnumDateFormatsA;
  2825. begin
  2826.   GetProcedureAddress(_EnumDateFormatsA, kernel32, 'EnumDateFormatsA');
  2827.   asm
  2828.     mov esp, ebp
  2829.     pop ebp
  2830.     jmp [_EnumDateFormatsA]
  2831.   end;
  2832. end;
  2833. {$ELSE}
  2834. function EnumDateFormatsA; external kernel32 name 'EnumDateFormatsA';
  2835. {$ENDIF DYNAMIC_LINK}
  2836. {$IFDEF DYNAMIC_LINK}
  2837. var
  2838.   _EnumDateFormatsW: Pointer;
  2839. function EnumDateFormatsW;
  2840. begin
  2841.   GetProcedureAddress(_EnumDateFormatsW, kernel32, 'EnumDateFormatsW');
  2842.   asm
  2843.     mov esp, ebp
  2844.     pop ebp
  2845.     jmp [_EnumDateFormatsW]
  2846.   end;
  2847. end;
  2848. {$ELSE}
  2849. function EnumDateFormatsW; external kernel32 name 'EnumDateFormatsW';
  2850. {$ENDIF DYNAMIC_LINK}
  2851. {$IFDEF UNICODE}
  2852. {$IFDEF DYNAMIC_LINK}
  2853. var
  2854.   _EnumDateFormats: Pointer;
  2855. function EnumDateFormats;
  2856. begin
  2857.   GetProcedureAddress(_EnumDateFormats, kernel32, 'EnumDateFormatsW');
  2858.   asm
  2859.     mov esp, ebp
  2860.     pop ebp
  2861.     jmp [_EnumDateFormats]
  2862.   end;
  2863. end;
  2864. {$ELSE}
  2865. function EnumDateFormats; external kernel32 name 'EnumDateFormatsW';
  2866. {$ENDIF DYNAMIC_LINK}
  2867. {$ELSE}
  2868. {$IFDEF DYNAMIC_LINK}
  2869. var
  2870.   _EnumDateFormats: Pointer;
  2871. function EnumDateFormats;
  2872. begin
  2873.   GetProcedureAddress(_EnumDateFormats, kernel32, 'EnumDateFormatsA');
  2874.   asm
  2875.     mov esp, ebp
  2876.     pop ebp
  2877.     jmp [_EnumDateFormats]
  2878.   end;
  2879. end;
  2880. {$ELSE}
  2881. function EnumDateFormats; external kernel32 name 'EnumDateFormatsA';
  2882. {$ENDIF DYNAMIC_LINK}
  2883. {$ENDIF}
  2884. {$IFDEF DYNAMIC_LINK}
  2885. var
  2886.   _EnumDateFormatsExA: Pointer;
  2887. function EnumDateFormatsExA;
  2888. begin
  2889.   GetProcedureAddress(_EnumDateFormatsExA, kernel32, 'EnumDateFormatsExA');
  2890.   asm
  2891.     mov esp, ebp
  2892.     pop ebp
  2893.     jmp [_EnumDateFormatsExA]
  2894.   end;
  2895. end;
  2896. {$ELSE}
  2897. function EnumDateFormatsExA; external kernel32 name 'EnumDateFormatsExA';
  2898. {$ENDIF DYNAMIC_LINK}
  2899. {$IFDEF DYNAMIC_LINK}
  2900. var
  2901.   _EnumDateFormatsExW: Pointer;
  2902. function EnumDateFormatsExW;
  2903. begin
  2904.   GetProcedureAddress(_EnumDateFormatsExW, kernel32, 'EnumDateFormatsExW');
  2905.   asm
  2906.     mov esp, ebp
  2907.     pop ebp
  2908.     jmp [_EnumDateFormatsExW]
  2909.   end;
  2910. end;
  2911. {$ELSE}
  2912. function EnumDateFormatsExW; external kernel32 name 'EnumDateFormatsExW';
  2913. {$ENDIF DYNAMIC_LINK}
  2914. {$IFDEF UNICODE}
  2915. {$IFDEF DYNAMIC_LINK}
  2916. var
  2917.   _EnumDateFormatsEx: Pointer;
  2918. function EnumDateFormatsEx;
  2919. begin
  2920.   GetProcedureAddress(_EnumDateFormatsEx, kernel32, 'EnumDateFormatsExW');
  2921.   asm
  2922.     mov esp, ebp
  2923.     pop ebp
  2924.     jmp [_EnumDateFormatsEx]
  2925.   end;
  2926. end;
  2927. {$ELSE}
  2928. function EnumDateFormatsEx; external kernel32 name 'EnumDateFormatsExW';
  2929. {$ENDIF DYNAMIC_LINK}
  2930. {$ELSE}
  2931. {$IFDEF DYNAMIC_LINK}
  2932. var
  2933.   _EnumDateFormatsEx: Pointer;
  2934. function EnumDateFormatsEx;
  2935. begin
  2936.   GetProcedureAddress(_EnumDateFormatsEx, kernel32, 'EnumDateFormatsExA');
  2937.   asm
  2938.     mov esp, ebp
  2939.     pop ebp
  2940.     jmp [_EnumDateFormatsEx]
  2941.   end;
  2942. end;
  2943. {$ELSE}
  2944. function EnumDateFormatsEx; external kernel32 name 'EnumDateFormatsExA';
  2945. {$ENDIF DYNAMIC_LINK}
  2946. {$ENDIF}
  2947. {$IFDEF DYNAMIC_LINK}
  2948. var
  2949.   _IsValidLanguageGroup: Pointer;
  2950. function IsValidLanguageGroup;
  2951. begin
  2952.   GetProcedureAddress(_IsValidLanguageGroup, kernel32, 'IsValidLanguageGroup');
  2953.   asm
  2954.     mov esp, ebp
  2955.     pop ebp
  2956.     jmp [_IsValidLanguageGroup]
  2957.   end;
  2958. end;
  2959. {$ELSE}
  2960. function IsValidLanguageGroup; external kernel32 name 'IsValidLanguageGroup';
  2961. {$ENDIF DYNAMIC_LINK}
  2962. {$IFDEF DYNAMIC_LINK}
  2963. var
  2964.   _GetNLSVersion: Pointer;
  2965. function GetNLSVersion;
  2966. begin
  2967.   GetProcedureAddress(_GetNLSVersion, kernel32, 'GetNLSVersion');
  2968.   asm
  2969.     mov esp, ebp
  2970.     pop ebp
  2971.     jmp [_GetNLSVersion]
  2972.   end;
  2973. end;
  2974. {$ELSE}
  2975. function GetNLSVersion; external kernel32 name 'GetNLSVersion';
  2976. {$ENDIF DYNAMIC_LINK}
  2977. {$IFDEF DYNAMIC_LINK}
  2978. var
  2979.   _IsNLSDefinedString: Pointer;
  2980. function IsNLSDefinedString;
  2981. begin
  2982.   GetProcedureAddress(_IsNLSDefinedString, kernel32, 'IsNLSDefinedString');
  2983.   asm
  2984.     mov esp, ebp
  2985.     pop ebp
  2986.     jmp [_IsNLSDefinedString]
  2987.   end;
  2988. end;
  2989. {$ELSE}
  2990. function IsNLSDefinedString; external kernel32 name 'IsNLSDefinedString';
  2991. {$ENDIF DYNAMIC_LINK}
  2992. {$IFDEF DYNAMIC_LINK}
  2993. var
  2994.   _IsValidLocale: Pointer;
  2995. function IsValidLocale;
  2996. begin
  2997.   GetProcedureAddress(_IsValidLocale, kernel32, 'IsValidLocale');
  2998.   asm
  2999.     mov esp, ebp
  3000.     pop ebp
  3001.     jmp [_IsValidLocale]
  3002.   end;
  3003. end;
  3004. {$ELSE}
  3005. function IsValidLocale; external kernel32 name 'IsValidLocale';
  3006. {$ENDIF DYNAMIC_LINK}
  3007. {$IFDEF DYNAMIC_LINK}
  3008. var
  3009.   _GetGeoInfoA: Pointer;
  3010. function GetGeoInfoA;
  3011. begin
  3012.   GetProcedureAddress(_GetGeoInfoA, kernel32, 'GetGeoInfoA');
  3013.   asm
  3014.     mov esp, ebp
  3015.     pop ebp
  3016.     jmp [_GetGeoInfoA]
  3017.   end;
  3018. end;
  3019. {$ELSE}
  3020. function GetGeoInfoA; external kernel32 name 'GetGeoInfoA';
  3021. {$ENDIF DYNAMIC_LINK}
  3022. {$IFDEF DYNAMIC_LINK}
  3023. var
  3024.   _GetGeoInfoW: Pointer;
  3025. function GetGeoInfoW;
  3026. begin
  3027.   GetProcedureAddress(_GetGeoInfoW, kernel32, 'GetGeoInfoW');
  3028.   asm
  3029.     mov esp, ebp
  3030.     pop ebp
  3031.     jmp [_GetGeoInfoW]
  3032.   end;
  3033. end;
  3034. {$ELSE}
  3035. function GetGeoInfoW; external kernel32 name 'GetGeoInfoW';
  3036. {$ENDIF DYNAMIC_LINK}
  3037. {$IFDEF UNICODE}
  3038. {$IFDEF DYNAMIC_LINK}
  3039. var
  3040.   _GetGeoInfo: Pointer;
  3041. function GetGeoInfo;
  3042. begin
  3043.   GetProcedureAddress(_GetGeoInfo, kernel32, 'GetGeoInfo');
  3044.   asm
  3045.     mov esp, ebp
  3046.     pop ebp
  3047.     jmp [_GetGeoInfo]
  3048.   end;
  3049. end;
  3050. {$ELSE}
  3051. function GetGeoInfo; external kernel32 name 'GetGeoInfo';
  3052. {$ENDIF DYNAMIC_LINK}
  3053. {$ELSE}
  3054. {$IFDEF DYNAMIC_LINK}
  3055. var
  3056.   _GetGeoInfo: Pointer;
  3057. function GetGeoInfo;
  3058. begin
  3059.   GetProcedureAddress(_GetGeoInfo, kernel32, 'GetGeoInfo');
  3060.   asm
  3061.     mov esp, ebp
  3062.     pop ebp
  3063.     jmp [_GetGeoInfo]
  3064.   end;
  3065. end;
  3066. {$ELSE}
  3067. function GetGeoInfo; external kernel32 name 'GetGeoInfo';
  3068. {$ENDIF DYNAMIC_LINK}
  3069. {$ENDIF}
  3070. {$IFDEF DYNAMIC_LINK}
  3071. var
  3072.   _EnumSystemGeoID: Pointer;
  3073. function EnumSystemGeoID;
  3074. begin
  3075.   GetProcedureAddress(_EnumSystemGeoID, kernel32, 'EnumSystemGeoID');
  3076.   asm
  3077.     mov esp, ebp
  3078.     pop ebp
  3079.     jmp [_EnumSystemGeoID]
  3080.   end;
  3081. end;
  3082. {$ELSE}
  3083. function EnumSystemGeoID; external kernel32 name 'EnumSystemGeoID';
  3084. {$ENDIF DYNAMIC_LINK}
  3085. {$IFDEF DYNAMIC_LINK}
  3086. var
  3087.   _GetUserGeoID: Pointer;
  3088. function GetUserGeoID;
  3089. begin
  3090.   GetProcedureAddress(_GetUserGeoID, kernel32, 'GetUserGeoID');
  3091.   asm
  3092.     mov esp, ebp
  3093.     pop ebp
  3094.     jmp [_GetUserGeoID]
  3095.   end;
  3096. end;
  3097. {$ELSE}
  3098. function GetUserGeoID; external kernel32 name 'GetUserGeoID';
  3099. {$ENDIF DYNAMIC_LINK}
  3100. {$IFDEF DYNAMIC_LINK}
  3101. var
  3102.   _SetUserGeoID: Pointer;
  3103. function SetUserGeoID;
  3104. begin
  3105.   GetProcedureAddress(_SetUserGeoID, kernel32, 'SetUserGeoID');
  3106.   asm
  3107.     mov esp, ebp
  3108.     pop ebp
  3109.     jmp [_SetUserGeoID]
  3110.   end;
  3111. end;
  3112. {$ELSE}
  3113. function SetUserGeoID; external kernel32 name 'SetUserGeoID';
  3114. {$ENDIF DYNAMIC_LINK}
  3115. {$IFDEF DYNAMIC_LINK}
  3116. var
  3117.   _ConvertDefaultLocale: Pointer;
  3118. function ConvertDefaultLocale;
  3119. begin
  3120.   GetProcedureAddress(_ConvertDefaultLocale, kernel32, 'ConvertDefaultLocale');
  3121.   asm
  3122.     mov esp, ebp
  3123.     pop ebp
  3124.     jmp [_ConvertDefaultLocale]
  3125.   end;
  3126. end;
  3127. {$ELSE}
  3128. function ConvertDefaultLocale; external kernel32 name 'ConvertDefaultLocale';
  3129. {$ENDIF DYNAMIC_LINK}
  3130. {$IFDEF DYNAMIC_LINK}
  3131. var
  3132.   _GetThreadLocale: Pointer;
  3133. function GetThreadLocale;
  3134. begin
  3135.   GetProcedureAddress(_GetThreadLocale, kernel32, 'GetThreadLocale');
  3136.   asm
  3137.     mov esp, ebp
  3138.     pop ebp
  3139.     jmp [_GetThreadLocale]
  3140.   end;
  3141. end;
  3142. {$ELSE}
  3143. function GetThreadLocale; external kernel32 name 'GetThreadLocale';
  3144. {$ENDIF DYNAMIC_LINK}
  3145. {$IFDEF DYNAMIC_LINK}
  3146. var
  3147.   _SetThreadLocale: Pointer;
  3148. function SetThreadLocale;
  3149. begin
  3150.   GetProcedureAddress(_SetThreadLocale, kernel32, 'SetThreadLocale');
  3151.   asm
  3152.     mov esp, ebp
  3153.     pop ebp
  3154.     jmp [_SetThreadLocale]
  3155.   end;
  3156. end;
  3157. {$ELSE}
  3158. function SetThreadLocale; external kernel32 name 'SetThreadLocale';
  3159. {$ENDIF DYNAMIC_LINK}
  3160. {$IFDEF DYNAMIC_LINK}
  3161. var
  3162.   _GetSystemDefaultUILanguage: Pointer;
  3163. function GetSystemDefaultUILanguage;
  3164. begin
  3165.   GetProcedureAddress(_GetSystemDefaultUILanguage, kernel32, 'GetSystemDefaultUILanguage');
  3166.   asm
  3167.     mov esp, ebp
  3168.     pop ebp
  3169.     jmp [_GetSystemDefaultUILanguage]
  3170.   end;
  3171. end;
  3172. {$ELSE}
  3173. function GetSystemDefaultUILanguage; external kernel32 name 'GetSystemDefaultUILanguage';
  3174. {$ENDIF DYNAMIC_LINK}
  3175. {$IFDEF DYNAMIC_LINK}
  3176. var
  3177.   _GetUserDefaultUILanguage: Pointer;
  3178. function GetUserDefaultUILanguage;
  3179. begin
  3180.   GetProcedureAddress(_GetUserDefaultUILanguage, kernel32, 'GetUserDefaultUILanguage');
  3181.   asm
  3182.     mov esp, ebp
  3183.     pop ebp
  3184.     jmp [_GetUserDefaultUILanguage]
  3185.   end;
  3186. end;
  3187. {$ELSE}
  3188. function GetUserDefaultUILanguage; external kernel32 name 'GetUserDefaultUILanguage';
  3189. {$ENDIF DYNAMIC_LINK}
  3190. {$IFDEF DYNAMIC_LINK}
  3191. var
  3192.   _GetSystemDefaultLangID: Pointer;
  3193. function GetSystemDefaultLangID;
  3194. begin
  3195.   GetProcedureAddress(_GetSystemDefaultLangID, kernel32, 'GetSystemDefaultLangID');
  3196.   asm
  3197.     mov esp, ebp
  3198.     pop ebp
  3199.     jmp [_GetSystemDefaultLangID]
  3200.   end;
  3201. end;
  3202. {$ELSE}
  3203. function GetSystemDefaultLangID; external kernel32 name 'GetSystemDefaultLangID';
  3204. {$ENDIF DYNAMIC_LINK}
  3205. {$IFDEF DYNAMIC_LINK}
  3206. var
  3207.   _GetUserDefaultLangID: Pointer;
  3208. function GetUserDefaultLangID;
  3209. begin
  3210.   GetProcedureAddress(_GetUserDefaultLangID, kernel32, 'GetUserDefaultLangID');
  3211.   asm
  3212.     mov esp, ebp
  3213.     pop ebp
  3214.     jmp [_GetUserDefaultLangID]
  3215.   end;
  3216. end;
  3217. {$ELSE}
  3218. function GetUserDefaultLangID; external kernel32 name 'GetUserDefaultLangID';
  3219. {$ENDIF DYNAMIC_LINK}
  3220. {$IFDEF DYNAMIC_LINK}
  3221. var
  3222.   _GetSystemDefaultLCID: Pointer;
  3223. function GetSystemDefaultLCID;
  3224. begin
  3225.   GetProcedureAddress(_GetSystemDefaultLCID, kernel32, 'GetSystemDefaultLCID');
  3226.   asm
  3227.     mov esp, ebp
  3228.     pop ebp
  3229.     jmp [_GetSystemDefaultLCID]
  3230.   end;
  3231. end;
  3232. {$ELSE}
  3233. function GetSystemDefaultLCID; external kernel32 name 'GetSystemDefaultLCID';
  3234. {$ENDIF DYNAMIC_LINK}
  3235. {$IFDEF DYNAMIC_LINK}
  3236. var
  3237.   _GetUserDefaultLCID: Pointer;
  3238. function GetUserDefaultLCID;
  3239. begin
  3240.   GetProcedureAddress(_GetUserDefaultLCID, kernel32, 'GetUserDefaultLCID');
  3241.   asm
  3242.     mov esp, ebp
  3243.     pop ebp
  3244.     jmp [_GetUserDefaultLCID]
  3245.   end;
  3246. end;
  3247. {$ELSE}
  3248. function GetUserDefaultLCID; external kernel32 name 'GetUserDefaultLCID';
  3249. {$ENDIF DYNAMIC_LINK}
  3250. {$IFDEF DYNAMIC_LINK}
  3251. var
  3252.   _GetStringTypeExA: Pointer;
  3253. function GetStringTypeExA;
  3254. begin
  3255.   GetProcedureAddress(_GetStringTypeExA, kernel32, 'GetStringTypeExA');
  3256.   asm
  3257.     mov esp, ebp
  3258.     pop ebp
  3259.     jmp [_GetStringTypeExA]
  3260.   end;
  3261. end;
  3262. {$ELSE}
  3263. function GetStringTypeExA; external kernel32 name 'GetStringTypeExA';
  3264. {$ENDIF DYNAMIC_LINK}
  3265. {$IFDEF DYNAMIC_LINK}
  3266. var
  3267.   _GetStringTypeExW: Pointer;
  3268. function GetStringTypeExW;
  3269. begin
  3270.   GetProcedureAddress(_GetStringTypeExW, kernel32, 'GetStringTypeExW');
  3271.   asm
  3272.     mov esp, ebp
  3273.     pop ebp
  3274.     jmp [_GetStringTypeExW]
  3275.   end;
  3276. end;
  3277. {$ELSE}
  3278. function GetStringTypeExW; external kernel32 name 'GetStringTypeExW';
  3279. {$ENDIF DYNAMIC_LINK}
  3280. {$IFDEF UNICODE}
  3281. {$IFDEF DYNAMIC_LINK}
  3282. var
  3283.   _GetStringTypeEx: Pointer;
  3284. function GetStringTypeEx;
  3285. begin
  3286.   GetProcedureAddress(_GetStringTypeEx, kernel32, 'GetStringTypeExW');
  3287.   asm
  3288.     mov esp, ebp
  3289.     pop ebp
  3290.     jmp [_GetStringTypeEx]
  3291.   end;
  3292. end;
  3293. {$ELSE}
  3294. function GetStringTypeEx; external kernel32 name 'GetStringTypeExW';
  3295. {$ENDIF DYNAMIC_LINK}
  3296. {$ELSE}
  3297. {$IFDEF DYNAMIC_LINK}
  3298. var
  3299.   _GetStringTypeEx: Pointer;
  3300. function GetStringTypeEx;
  3301. begin
  3302.   GetProcedureAddress(_GetStringTypeEx, kernel32, 'GetStringTypeExA');
  3303.   asm
  3304.     mov esp, ebp
  3305.     pop ebp
  3306.     jmp [_GetStringTypeEx]
  3307.   end;
  3308. end;
  3309. {$ELSE}
  3310. function GetStringTypeEx; external kernel32 name 'GetStringTypeExA';
  3311. {$ENDIF DYNAMIC_LINK}
  3312. {$ENDIF}
  3313. {$IFDEF DYNAMIC_LINK}
  3314. var
  3315.   _GetStringTypeA: Pointer;
  3316. function GetStringTypeA;
  3317. begin
  3318.   GetProcedureAddress(_GetStringTypeA, kernel32, 'GetStringTypeA');
  3319.   asm
  3320.     mov esp, ebp
  3321.     pop ebp
  3322.     jmp [_GetStringTypeA]
  3323.   end;
  3324. end;
  3325. {$ELSE}
  3326. function GetStringTypeA; external kernel32 name 'GetStringTypeA';
  3327. {$ENDIF DYNAMIC_LINK}
  3328. {$IFDEF DYNAMIC_LINK}
  3329. var
  3330.   _GetStringTypeW: Pointer;
  3331. function GetStringTypeW;
  3332. begin
  3333.   GetProcedureAddress(_GetStringTypeW, kernel32, 'GetStringTypeW');
  3334.   asm
  3335.     mov esp, ebp
  3336.     pop ebp
  3337.     jmp [_GetStringTypeW]
  3338.   end;
  3339. end;
  3340. {$ELSE}
  3341. function GetStringTypeW; external kernel32 name 'GetStringTypeW';
  3342. {$ENDIF DYNAMIC_LINK}
  3343. {$IFDEF DYNAMIC_LINK}
  3344. var
  3345.   _FoldStringA: Pointer;
  3346. function FoldStringA;
  3347. begin
  3348.   GetProcedureAddress(_FoldStringA, kernel32, 'FoldStringA');
  3349.   asm
  3350.     mov esp, ebp
  3351.     pop ebp
  3352.     jmp [_FoldStringA]
  3353.   end;
  3354. end;
  3355. {$ELSE}
  3356. function FoldStringA; external kernel32 name 'FoldStringA';
  3357. {$ENDIF DYNAMIC_LINK}
  3358. {$IFDEF DYNAMIC_LINK}
  3359. var
  3360.   _FoldStringW: Pointer;
  3361. function FoldStringW;
  3362. begin
  3363.   GetProcedureAddress(_FoldStringW, kernel32, 'FoldStringW');
  3364.   asm
  3365.     mov esp, ebp
  3366.     pop ebp
  3367.     jmp [_FoldStringW]
  3368.   end;
  3369. end;
  3370. {$ELSE}
  3371. function FoldStringW; external kernel32 name 'FoldStringW';
  3372. {$ENDIF DYNAMIC_LINK}
  3373. {$IFDEF UNICODE}
  3374. {$IFDEF DYNAMIC_LINK}
  3375. var
  3376.   _FoldString: Pointer;
  3377. function FoldString;
  3378. begin
  3379.   GetProcedureAddress(_FoldString, kernel32, 'FoldStringW');
  3380.   asm
  3381.     mov esp, ebp
  3382.     pop ebp
  3383.     jmp [_FoldString]
  3384.   end;
  3385. end;
  3386. {$ELSE}
  3387. function FoldString; external kernel32 name 'FoldStringW';
  3388. {$ENDIF DYNAMIC_LINK}
  3389. {$ELSE}
  3390. {$IFDEF DYNAMIC_LINK}
  3391. var
  3392.   _FoldString: Pointer;
  3393. function FoldString;
  3394. begin
  3395.   GetProcedureAddress(_FoldString, kernel32, 'FoldStringA');
  3396.   asm
  3397.     mov esp, ebp
  3398.     pop ebp
  3399.     jmp [_FoldString]
  3400.   end;
  3401. end;
  3402. {$ELSE}
  3403. function FoldString; external kernel32 name 'FoldStringA';
  3404. {$ENDIF DYNAMIC_LINK}
  3405. {$ENDIF}
  3406. {$IFDEF DYNAMIC_LINK}
  3407. var
  3408.   _EnumSystemLanguageGroupsA: Pointer;
  3409. function EnumSystemLanguageGroupsA;
  3410. begin
  3411.   GetProcedureAddress(_EnumSystemLanguageGroupsA, kernel32, 'EnumSystemLanguageGroupsA');
  3412.   asm
  3413.     mov esp, ebp
  3414.     pop ebp
  3415.     jmp [_EnumSystemLanguageGroupsA]
  3416.   end;
  3417. end;
  3418. {$ELSE}
  3419. function EnumSystemLanguageGroupsA; external kernel32 name 'EnumSystemLanguageGroupsA';
  3420. {$ENDIF DYNAMIC_LINK}
  3421. {$IFDEF DYNAMIC_LINK}
  3422. var
  3423.   _EnumSystemLanguageGroupsW: Pointer;
  3424. function EnumSystemLanguageGroupsW;
  3425. begin
  3426.   GetProcedureAddress(_EnumSystemLanguageGroupsW, kernel32, 'EnumSystemLanguageGroupsW');
  3427.   asm
  3428.     mov esp, ebp
  3429.     pop ebp
  3430.     jmp [_EnumSystemLanguageGroupsW]
  3431.   end;
  3432. end;
  3433. {$ELSE}
  3434. function EnumSystemLanguageGroupsW; external kernel32 name 'EnumSystemLanguageGroupsW';
  3435. {$ENDIF DYNAMIC_LINK}
  3436. {$IFDEF UNICODE}
  3437. {$IFDEF DYNAMIC_LINK}
  3438. var
  3439.   _EnumSystemLanguageGroups: Pointer;
  3440. function EnumSystemLanguageGroups;
  3441. begin
  3442.   GetProcedureAddress(_EnumSystemLanguageGroups, kernel32, 'EnumSystemLanguageGroupsW');
  3443.   asm
  3444.     mov esp, ebp
  3445.     pop ebp
  3446.     jmp [_EnumSystemLanguageGroups]
  3447.   end;
  3448. end;
  3449. {$ELSE}
  3450. function EnumSystemLanguageGroups; external kernel32 name 'EnumSystemLanguageGroupsW';
  3451. {$ENDIF DYNAMIC_LINK}
  3452. {$ELSE}
  3453. {$IFDEF DYNAMIC_LINK}
  3454. var
  3455.   _EnumSystemLanguageGroups: Pointer;
  3456. function EnumSystemLanguageGroups;
  3457. begin
  3458.   GetProcedureAddress(_EnumSystemLanguageGroups, kernel32, 'EnumSystemLanguageGroupsA');
  3459.   asm
  3460.     mov esp, ebp
  3461.     pop ebp
  3462.     jmp [_EnumSystemLanguageGroups]
  3463.   end;
  3464. end;
  3465. {$ELSE}
  3466. function EnumSystemLanguageGroups; external kernel32 name 'EnumSystemLanguageGroupsA';
  3467. {$ENDIF DYNAMIC_LINK}
  3468. {$ENDIF}
  3469. {$IFDEF DYNAMIC_LINK}
  3470. var
  3471.   _EnumLanguageGroupLocalesA: Pointer;
  3472. function EnumLanguageGroupLocalesA;
  3473. begin
  3474.   GetProcedureAddress(_EnumLanguageGroupLocalesA, kernel32, 'EnumLanguageGroupLocalesA');
  3475.   asm
  3476.     mov esp, ebp
  3477.     pop ebp
  3478.     jmp [_EnumLanguageGroupLocalesA]
  3479.   end;
  3480. end;
  3481. {$ELSE}
  3482. function EnumLanguageGroupLocalesA; external kernel32 name 'EnumLanguageGroupLocalesA';
  3483. {$ENDIF DYNAMIC_LINK}
  3484. {$IFDEF DYNAMIC_LINK}
  3485. var
  3486.   _EnumLanguageGroupLocalesW: Pointer;
  3487. function EnumLanguageGroupLocalesW;
  3488. begin
  3489.   GetProcedureAddress(_EnumLanguageGroupLocalesW, kernel32, 'EnumLanguageGroupLocalesW');
  3490.   asm
  3491.     mov esp, ebp
  3492.     pop ebp
  3493.     jmp [_EnumLanguageGroupLocalesW]
  3494.   end;
  3495. end;
  3496. {$ELSE}
  3497. function EnumLanguageGroupLocalesW; external kernel32 name 'EnumLanguageGroupLocalesW';
  3498. {$ENDIF DYNAMIC_LINK}
  3499. {$IFDEF UNICODE}
  3500. {$IFDEF DYNAMIC_LINK}
  3501. var
  3502.   _EnumLanguageGroupLocales: Pointer;
  3503. function EnumLanguageGroupLocales;
  3504. begin
  3505.   GetProcedureAddress(_EnumLanguageGroupLocales, kernel32, 'EnumLanguageGroupLocalesW');
  3506.   asm
  3507.     mov esp, ebp
  3508.     pop ebp
  3509.     jmp [_EnumLanguageGroupLocales]
  3510.   end;
  3511. end;
  3512. {$ELSE}
  3513. function EnumLanguageGroupLocales; external kernel32 name 'EnumLanguageGroupLocalesW';
  3514. {$ENDIF DYNAMIC_LINK}
  3515. {$ELSE}
  3516. {$IFDEF DYNAMIC_LINK}
  3517. var
  3518.   _EnumLanguageGroupLocales: Pointer;
  3519. function EnumLanguageGroupLocales;
  3520. begin
  3521.   GetProcedureAddress(_EnumLanguageGroupLocales, kernel32, 'EnumLanguageGroupLocalesA');
  3522.   asm
  3523.     mov esp, ebp
  3524.     pop ebp
  3525.     jmp [_EnumLanguageGroupLocales]
  3526.   end;
  3527. end;
  3528. {$ELSE}
  3529. function EnumLanguageGroupLocales; external kernel32 name 'EnumLanguageGroupLocalesA';
  3530. {$ENDIF DYNAMIC_LINK}
  3531. {$ENDIF}
  3532. {$IFDEF DYNAMIC_LINK}
  3533. var
  3534.   _EnumUILanguagesA: Pointer;
  3535. function EnumUILanguagesA;
  3536. begin
  3537.   GetProcedureAddress(_EnumUILanguagesA, kernel32, 'EnumUILanguagesA');
  3538.   asm
  3539.     mov esp, ebp
  3540.     pop ebp
  3541.     jmp [_EnumUILanguagesA]
  3542.   end;
  3543. end;
  3544. {$ELSE}
  3545. function EnumUILanguagesA; external kernel32 name 'EnumUILanguagesA';
  3546. {$ENDIF DYNAMIC_LINK}
  3547. {$IFDEF DYNAMIC_LINK}
  3548. var
  3549.   _EnumUILanguagesW: Pointer;
  3550. function EnumUILanguagesW;
  3551. begin
  3552.   GetProcedureAddress(_EnumUILanguagesW, kernel32, 'EnumUILanguagesW');
  3553.   asm
  3554.     mov esp, ebp
  3555.     pop ebp
  3556.     jmp [_EnumUILanguagesW]
  3557.   end;
  3558. end;
  3559. {$ELSE}
  3560. function EnumUILanguagesW; external kernel32 name 'EnumUILanguagesW';
  3561. {$ENDIF DYNAMIC_LINK}
  3562. {$IFDEF UNICODE}
  3563. {$IFDEF DYNAMIC_LINK}
  3564. var
  3565.   _EnumUILanguages: Pointer;
  3566. function EnumUILanguages;
  3567. begin
  3568.   GetProcedureAddress(_EnumUILanguages, kernel32, 'EnumUILanguagesW');
  3569.   asm
  3570.     mov esp, ebp
  3571.     pop ebp
  3572.     jmp [_EnumUILanguages]
  3573.   end;
  3574. end;
  3575. {$ELSE}
  3576. function EnumUILanguages; external kernel32 name 'EnumUILanguagesW';
  3577. {$ENDIF DYNAMIC_LINK}
  3578. {$ELSE}
  3579. {$IFDEF DYNAMIC_LINK}
  3580. var
  3581.   _EnumUILanguages: Pointer;
  3582. function EnumUILanguages;
  3583. begin
  3584.   GetProcedureAddress(_EnumUILanguages, kernel32, 'EnumUILanguagesA');
  3585.   asm
  3586.     mov esp, ebp
  3587.     pop ebp
  3588.     jmp [_EnumUILanguages]
  3589.   end;
  3590. end;
  3591. {$ELSE}
  3592. function EnumUILanguages; external kernel32 name 'EnumUILanguagesA';
  3593. {$ENDIF DYNAMIC_LINK}
  3594. {$ENDIF}
  3595. {$IFDEF DYNAMIC_LINK}
  3596. var
  3597.   _EnumSystemLocalesA: Pointer;
  3598. function EnumSystemLocalesA;
  3599. begin
  3600.   GetProcedureAddress(_EnumSystemLocalesA, kernel32, 'EnumSystemLocalesA');
  3601.   asm
  3602.     mov esp, ebp
  3603.     pop ebp
  3604.     jmp [_EnumSystemLocalesA]
  3605.   end;
  3606. end;
  3607. {$ELSE}
  3608. function EnumSystemLocalesA; external kernel32 name 'EnumSystemLocalesA';
  3609. {$ENDIF DYNAMIC_LINK}
  3610. {$IFDEF DYNAMIC_LINK}
  3611. var
  3612.   _EnumSystemLocalesW: Pointer;
  3613. function EnumSystemLocalesW;
  3614. begin
  3615.   GetProcedureAddress(_EnumSystemLocalesW, kernel32, 'EnumSystemLocalesW');
  3616.   asm
  3617.     mov esp, ebp
  3618.     pop ebp
  3619.     jmp [_EnumSystemLocalesW]
  3620.   end;
  3621. end;
  3622. {$ELSE}
  3623. function EnumSystemLocalesW; external kernel32 name 'EnumSystemLocalesW';
  3624. {$ENDIF DYNAMIC_LINK}
  3625. {$IFDEF UNICODE}
  3626. {$IFDEF DYNAMIC_LINK}
  3627. var
  3628.   _EnumSystemLocales: Pointer;
  3629. function EnumSystemLocales;
  3630. begin
  3631.   GetProcedureAddress(_EnumSystemLocales, kernel32, 'EnumSystemLocalesW');
  3632.   asm
  3633.     mov esp, ebp
  3634.     pop ebp
  3635.     jmp [_EnumSystemLocales]
  3636.   end;
  3637. end;
  3638. {$ELSE}
  3639. function EnumSystemLocales; external kernel32 name 'EnumSystemLocalesW';
  3640. {$ENDIF DYNAMIC_LINK}
  3641. {$ELSE}
  3642. {$IFDEF DYNAMIC_LINK}
  3643. var
  3644.   _EnumSystemLocales: Pointer;
  3645. function EnumSystemLocales;
  3646. begin
  3647.   GetProcedureAddress(_EnumSystemLocales, kernel32, 'EnumSystemLocalesA');
  3648.   asm
  3649.     mov esp, ebp
  3650.     pop ebp
  3651.     jmp [_EnumSystemLocales]
  3652.   end;
  3653. end;
  3654. {$ELSE}
  3655. function EnumSystemLocales; external kernel32 name 'EnumSystemLocalesA';
  3656. {$ENDIF DYNAMIC_LINK}
  3657. {$ENDIF}
  3658. {$IFDEF DYNAMIC_LINK}
  3659. var
  3660.   _EnumSystemCodePagesA: Pointer;
  3661. function EnumSystemCodePagesA;
  3662. begin
  3663.   GetProcedureAddress(_EnumSystemCodePagesA, kernel32, 'EnumSystemCodePagesA');
  3664.   asm
  3665.     mov esp, ebp
  3666.     pop ebp
  3667.     jmp [_EnumSystemCodePagesA]
  3668.   end;
  3669. end;
  3670. {$ELSE}
  3671. function EnumSystemCodePagesA; external kernel32 name 'EnumSystemCodePagesA';
  3672. {$ENDIF DYNAMIC_LINK}
  3673. {$IFDEF DYNAMIC_LINK}
  3674. var
  3675.   _EnumSystemCodePagesW: Pointer;
  3676. function EnumSystemCodePagesW;
  3677. begin
  3678.   GetProcedureAddress(_EnumSystemCodePagesW, kernel32, 'EnumSystemCodePagesW');
  3679.   asm
  3680.     mov esp, ebp
  3681.     pop ebp
  3682.     jmp [_EnumSystemCodePagesW]
  3683.   end;
  3684. end;
  3685. {$ELSE}
  3686. function EnumSystemCodePagesW; external kernel32 name 'EnumSystemCodePagesW';
  3687. {$ENDIF DYNAMIC_LINK}
  3688. {$IFDEF UNICODE}
  3689. {$IFDEF DYNAMIC_LINK}
  3690. var
  3691.   _EnumSystemCodePages: Pointer;
  3692. function EnumSystemCodePages;
  3693. begin
  3694.   GetProcedureAddress(_EnumSystemCodePages, kernel32, 'EnumSystemCodePagesW');
  3695.   asm
  3696.     mov esp, ebp
  3697.     pop ebp
  3698.     jmp [_EnumSystemCodePages]
  3699.   end;
  3700. end;
  3701. {$ELSE}
  3702. function EnumSystemCodePages; external kernel32 name 'EnumSystemCodePagesW';
  3703. {$ENDIF DYNAMIC_LINK}
  3704. {$ELSE}
  3705. {$IFDEF DYNAMIC_LINK}
  3706. var
  3707.   _EnumSystemCodePages: Pointer;
  3708. function EnumSystemCodePages;
  3709. begin
  3710.   GetProcedureAddress(_EnumSystemCodePages, kernel32, 'EnumSystemCodePagesA');
  3711.   asm
  3712.     mov esp, ebp
  3713.     pop ebp
  3714.     jmp [_EnumSystemCodePages]
  3715.   end;
  3716. end;
  3717. {$ELSE}
  3718. function EnumSystemCodePages; external kernel32 name 'EnumSystemCodePagesA';
  3719. {$ENDIF DYNAMIC_LINK}
  3720. {$ENDIF}
  3721. end.