jwawinnls.pas 100 KB

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