{Ä Fido Pascal Conference ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PASCAL Ä Msg : 493 of 505 From : Andres Cvitkovich 2:310/36.9 28 Apr 93 22:59 To : Jon Leosson 2:391/20.0 Subj : Reading the country info ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Hi Jon, Wednesday, April 14 1993, Jon Leosson wrote to All: JL> Does anybody know how one can read the country info which is set by JL> COUNTRY.SYS in DOS 4.0 and 5.0? Any help would be appreciated... or DOS 6.0 or DOS 3.x or ... ;-) here we go: ---------------------------------------------------------------} Unit NLS; { NLS.PAS - National Language Support } { ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ } { (W) Written 1992 by A. Cvitkovich } INTERFACE CONST DATE_USA = 0; DATE_EUROPE = 1; DATE_JAPAN = 2; TIME_12HOUR = 0; TIME_24HOUR = 1; TYPE CountryInfo = Record ciDateFormat : Word; ciCurrency : Array [1..5] Of Char; ciThousands : Char; ciASCIIZ_1 : Byte; ciDecimal : Char; ciASCIIZ_2 : Byte; ciDateSep : Char; ciASCIIZ_3 : Byte; ciTimeSep : Char; ciASCIIZ_4 : Byte; ciBitField : Byte; ciCurrencyPlaces: Byte; ciTimeFormat : Byte; ciCaseMap : Procedure; ciDataSep : Char; ciASCIIZ_5 : Byte; ciReserved : Array [1..10] Of Byte End; DateString = String [10]; TimeString = String [10]; VAR Country : CountryInfo; FUNCTION GetCountryInfo (Buf: Pointer): Boolean; FUNCTION DateStr: DateString; FUNCTION TimeStr: TimeString; IMPLEMENTATION USES Dos; FUNCTION GetCountryInfo (Buf: Pointer): Boolean; Assembler; Asm mov ax, 3800h push ds lds dx, Buf int 21h mov al, TRUE jnc @@1 xor al, al @@1: pop ds End; FUNCTION DateStr: DateString; VAR Year, Month, Day, Weekday : Word; dd, mm : String[2]; yy : String[4]; BEGIN GetDate (Year, Month, Day, WeekDay); Str (Day:2, dd); If dd[1] = ' ' Then dd[1] := '0'; Str (Month:2, mm); If mm[1] = ' ' Then mm[1] := '0'; Str (Year:4, yy); Case Country.ciDateFormat Of DATE_USA: DateStr := mm + Country.ciDateSep + dd + Country.ciDateSep + yy; DATE_EUROPE: DateStr := dd + Country.ciDateSep + mm + Country.ciDateSep + yy; DATE_JAPAN: DateStr := yy + Country.ciDateSep + mm + Country.ciDateSep + dd; Else DateStr := '' End; END; FUNCTION TimeStr: TimeString; VAR Hour, Min, Sec, Sec100 : Word; hh, mm, ss : String[2]; ampm : Char; BEGIN GetTime (Hour, Min, Sec, Sec100); Str (Min:2, mm); If mm[1] = ' ' Then mm[1] := '0'; Str (Sec:2, ss); If ss[1] = ' ' Then ss[1] := '0'; Case Country.ciTimeFormat Of TIME_12HOUR: Begin If Hour < 12 Then ampm := 'a' Else ampm := 'p'; Hour := Hour MOD 12; If Hour = 0 Then Hour := 12; Str (Hour:2, hh); TimeStr := hh + Country.ciTimeSep + mm + Country.ciTimeSep + ss + ampm + 'm' End; TIME_24HOUR: Begin Str (Hour:2, hh); TimeStr := hh + Country.ciTimeSep + mm + Country.ciTimeSep + ss End; Else TimeStr := '' End; END; BEGIN If Not GetCountryInfo (@Country) Then Begin Country.ciDateFormat := DATE_USA; Country.ciDateSep := '-'; Country.ciTimeFormat := TIME_12HOUR; Country.ciTimeSep := ':'; End; END.