[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]
(*
> Function SYS_DATE : STR8; { Format System Date as YY/MM/DD }
No doubt, your Function will work. But don't you think that nowadays
Programmers, even if they live in the United States, should Write software
which is a little bit more open-minded? The date Format "YY/MM/DD" is commonly
used in your country, but in the country where I live "DD-MM-YY" is standard,
and in other countries there are other date and time Formats in use.
Dates expressed in your country Format appear somewhat strange and
bizarre outside the US. I wonder why most American Programmers don't care
about the country support alReady built-in into Dos. Is this arrogance or does
this indicate a somewhat narrow-minded American way of thinking?
Use the following Unit to determine the current country settings Valid
on the Computer your Program is operating on:
*)
Unit country;
Interface
Type
str4 = String[4];
Function countryCode : Byte;
Function currencySymbol : str4;
Function dateFormat : Word;
Function dateSeparator : Char;
Function DecimalSeparator : Char;
Function timeSeparator : Char;
Implementation
Uses
Dos;
Type
countryInfoRecord = Record
dateFormat : Word;
currency : Array[1..5] of Char;
thouSep,
DecSep,
dateSep,
timeSep : Array[1..2] of Char;
currencyFormat,
significantDec,
timeFormat : Byte;
CaseMapAddress : LongInt;
dataListSep : Array[1..2] of Char;
reserved : Array[1..5] of Word
end;
Var
countryRecord : countryInfoRecord;
reg : Registers;
Procedure getCountryInfo; { generic Dos call used by all Functions }
begin
reg.AH := $38;
reg.AL := 0;
reg.DS := seg(countryRecord);
reg.DX := ofs(countryRecord);
msDos(reg)
end; { getCountryInfo }
Function countryCode : Byte; { returns country code as set in Config.Sys }
begin
countryCode := reg.AL
end; { countryCode }
Function currencySymbol : str4; { returns currency symbol }
Var
temp : str4;
i : Byte;
begin
With countryRecord do
begin
temp := '';
i := 0;
Repeat
Inc(i);
if currency[i] <> #0 then temp := temp + currency
Until (i = 5) or (currency[i] = #0)
end;
currencySymbol := temp
end; { currencySymbol }
Function dateFormat : Word;
{ 0 : USA standard mm/dd/yy }
{ 1 : Europe standard dd-mm-yy }
{ 2 : Japan standard yy/mm/dd }
begin
dateFormat := countryRecord.dateFormat
end; { dateFormat }
Function dateSeparator : Char; { date separator Character }
begin
dateSeparator := countryRecord.dateSep[1]
end; { dateSeparator }
Function DecimalSeparator : Char; { Decimal separator Character }
begin
DecimalSeparator := countryRecord.DecSep[1]
end; { DecimalSeparator }
Function timeSeparator : Char; { time separator Character }
begin
timeSeparator := countryRecord.timeSep[1]
end; { timeSeparator }
begin
getCountryInfo
end. { Unit country }
[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]