getctry.pas 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. program GetCountryInfo;
  2. {$IFNDEF OS2}
  3. Sorry, this code is for OS/2 only...
  4. {$ENDIF}
  5. uses
  6. {$IFDEF FPC}
  7. DosCalls;
  8. {$ELSE}
  9. Os2Def,
  10. {$IFDEF VIRTUALPASCAL}
  11. Os2Base;
  12. {$ELSE}
  13. {$IFDEF SPEED}
  14. BseDos;
  15. {$ELSE}
  16. DosProcs, DosTypes;
  17. {$ENDIF}
  18. {$ENDIF}
  19. {$ENDIF}
  20. type
  21. cardinal = longint;
  22. {$IFDEF FPC}
  23. const
  24. NO_ERROR = 0;
  25. {$ENDIF}
  26. var
  27. {$IFDEF VER70} (* patched Borland Pascal *)
  28. Country: TCountryCode;
  29. CtryInfo: TCountryInfo;
  30. Size: longint;
  31. {$ELSE}
  32. Country: COUNTRYCODE; (* Country code info (0 = current country) *)
  33. CtryInfo: COUNTRYINFO; (* Buffer for country-specific information *)
  34. Size: cardinal; (* Real size of returned data *)
  35. {$ENDIF}
  36. W: word;
  37. begin
  38. WriteLn;
  39. Size := 0;
  40. FillChar (Country, SizeOf (Country), 0);
  41. FillChar (CtryInfo, SizeOf (CtryInfo), 0);
  42. W :=
  43. {$IFDEF VER70}
  44. DosGetCtryInfo
  45. {$ELSE}
  46. DosQueryCtryInfo
  47. {$ENDIF}
  48. (SizeOf (CtryInfo), Country, CtryInfo, Size);
  49. if (W <> NO_ERROR) then
  50. begin
  51. WriteLn ('DosQueryCtryInfo error: return code = ', W);
  52. Halt (1);
  53. end;
  54. WriteLn ('Code of the country is ', CtryInfo.Country,
  55. ', current codepage is ', CtryInfo.CodePage);
  56. end.