如何识别系统是简体还是繁体,是win9x还是win2000
解决方案 »
- 用什么办法可以提取一个字符的ACSII码值,并且赋给一个整型变量。
- HTTP协议有时候不返回Content-Length 该怎么办
- 请问Tchart控件里怎么设置背景网格的宽度?
- 一个头疼的问题:关于ExcelApplication的另存为功能
- 在Applyupdates的时候出现Invalid Paramers错误?
- 版本控制的序列号TeamSource1.10在线等待!
- 用ADO如何实现事务处理
- 请问在三层架构中,客户端如何执行服务器端的方法?
- 谁会用 ddvue控件啊?
- 如何在OLE控件中,显示我所选择的Execel文档
- Delphi 起动很慢是什么原因?
- 请高手指点:实时处理数据的问题。
//本地信息结构类型
//title是项目名称
//value是内容
LocaleRecord = record
Title: string;
Value: string;
end;var
//存储本地信息的变量数组
LocaleRec: array[1..25] of LocaleRecord;
procedure GetGenericInfo;
var
BufLen: DWORD;
Buffer: PChar;
begin
BufLen:=255; //内存长度
GetMem(Buffer, BufLen); //分配内存
try
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLANGUAGE, Buffer, BufLen);
LocaleRec[01].Value := Buffer; LocaleRec[01].Title := '本地语言'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, BufLen);
LocaleRec[02].Value := Buffer; LocaleRec[02].Title := '本地语言的英语名字 (Iso 639)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVLANGNAME, Buffer, BufLen);
LocaleRec[03].Value := Buffer; LocaleRec[03].Title := '本地语言的缩写名字 (Iso 639)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICOUNTRY, Buffer, BufLen);
LocaleRec[04].Value := Buffer; LocaleRec[04].Title := '国家代码 (IBM code)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCOUNTRY, Buffer, BufLen);
LocaleRec[05].Value := Buffer; LocaleRec[05].Title := '国家全代码'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVCTRYNAME, Buffer, BufLen);
LocaleRec[06].Value := Buffer; LocaleRec[06].Title := '国家缩略代码 (Iso 3166)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SINTLSYMBOL, Buffer, BufLen);
LocaleRec[07].Value := Buffer; LocaleRec[07].Title := '国际货币符号 (Iso 4217)'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLIST, Buffer, BufLen);
LocaleRec[08].Value := Buffer; LocaleRec[08].Title := 'List separator'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IMEASURE, Buffer, BufLen);
LocaleRec[09].Value := Buffer; LocaleRec[09].Title := 'System of measurement';
case LocaleRec[09].Value[1] of
'0' : LocaleRec[09].Value := 'Decimal';
'1' : LocaleRec[09].Value := 'Usa';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, Buffer, BufLen);
LocaleRec[10].Value := Buffer; LocaleRec[10].Title := '小数点'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDIGITS, Buffer, BufLen);
LocaleRec[11].Value := Buffer; LocaleRec[11].Title := 'Number of decimal digits'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCURRENCY, Buffer, BufLen);
LocaleRec[12].Value := Buffer; LocaleRec[12].Title := 'Local monetary symbol'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONDECIMALSEP, Buffer, BufLen);
LocaleRec[13].Value := Buffer; LocaleRec[13].Title := 'Currency decimal separator'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHOUSANDSEP, Buffer, BufLen);
LocaleRec[14].Value := Buffer; LocaleRec[14].Title := 'Currency thousand separator'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRDIGITS, Buffer, BufLen);
LocaleRec[15].Value := Buffer; LocaleRec[15].Title := 'Currency decimal digits'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRENCY, Buffer, BufLen);
LocaleRec[16].Value := Buffer; LocaleRec[16].Title := 'Positive currency mode';
case LocaleRec[16].Value[1] of
'0': LocaleRec[16].Value := 'Prefix, no separation';
'1': LocaleRec[16].Value := 'Suffix, no separation';
'2': LocaleRec[16].Value := 'Prefix, 1-char. separation';
'3': LocaleRec[16].Value := 'Suffix, 1-char. separation';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_INEGCURR, Buffer, BufLen);
LocaleRec[17].Value := Buffer; LocaleRec[17].Title := 'Negative currency mode';
case LocaleRec[17].Value[1] of
'0': LocaleRec[17].Value := '$1.1)';
'1': LocaleRec[17].Value := '-$1.1';
'2': LocaleRec[17].Value := '$-1.1';
'3': LocaleRec[17].Value := '$1.1-';
'4': LocaleRec[17].Value := '(1.1$)';
'5': LocaleRec[17].Value := '-1.1$';
'6': LocaleRec[17].Value := '1.1-$';
'7': LocaleRec[17].Value := '1.1$-';
'8': LocaleRec[17].Value := '-1.1 $ (space before $)';
'9': LocaleRec[17].Value := '-$ 1.1 (space after $)';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDATE, Buffer, BufLen);
LocaleRec[18].Value := Buffer; LocaleRec[18].Title := '日期分割符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIME, Buffer, BufLen);
LocaleRec[19].Value := Buffer; LocaleRec[19].Title := '时间分割符'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT, Buffer, BufLen);
LocaleRec[20].Value := Buffer; LocaleRec[20].Title := '时间格式'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, Buffer, BufLen);
LocaleRec[21].Value := Buffer; LocaleRec[21].Title := 'Short date format'; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDATE, Buffer, BufLen);
LocaleRec[22].Value := Buffer; LocaleRec[22].Title := 'Short date order';
case LocaleRec[22].Value[1] of
'0': LocaleRec[22].Value := 'Month-Day-Year';
'1': LocaleRec[22].Value := 'Day-Month-Year';
'2': LocaleRec[22].Value := 'Year-Month-Day';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ILDATE, Buffer, BufLen);
LocaleRec[23].Value := Buffer; LocaleRec[23].Title := 'Long date order';
case LocaleRec[23].Value[1] of
'0': LocaleRec[23].Value := 'Month-Day-Year';
'1': LocaleRec[23].Value := 'Day-Month-Year';
'2': LocaleRec[23].Value := 'Year-Month-Day';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ITIME, Buffer, BufLen);
LocaleRec[24].Value := Buffer; LocaleRec[24].Title := 'Time format specifier';
case LocaleRec[24].Value[1] of
'0': LocaleRec[24].Value := 'AM / PM 12-hour format';
'1': LocaleRec[24].Value := '24-hour format';
end; GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICENTURY, Buffer, BufLen);
LocaleRec[25].Value := Buffer; LocaleRec[25].Title := 'Year format';
case LocaleRec[25].Value[1] of
'0': LocaleRec[25].Value := 'Abbreviated 2-digit century';
'1': LocaleRec[25].Value := 'Full 4-digit century';
end; finally
FreeMem(Buffer);
end;
end; {- GetGenericInfo }
const strOsType: array[0..7] of string=('osUnknown','osWin95','osWin98','osWin98se','osWinme','osWinnt4','osWin2k','osWinxp');
type OSType=(osUnknown,osWin95,osWin98,osWin98se,osWinme,osWinnt4,osWin2k,osWinxp);Function GetOSVersion : OSType;
Var
osVerInfo : TOSVersionInfo;
majorVer, minorVer : Integer;
Begin //Result := osUnknown;
osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
If ( GetVersionEx( osVerInfo ) ) Then
Begin
majorVer := osVerInfo.dwMajorVersion;
minorVer := osVerInfo.dwMinorVersion;
Case ( osVerInfo.dwPlatformId ) Of
VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
Begin
If ( majorVer <= 4 ) Then
Result := osWinnt4
Else
If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
Result := osWin2k
Else
If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
Result := osWinxp
Else
Result := OsUnknown;
End;
VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
Begin If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
Result := osWin95
Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then
Begin
If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
Result := osWin98se
Else
Result := osWin98;
End
Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
Result := OsWinME
Else
Result := OsUnknown; End;
Else
Result := OsUnknown;
End; //end of case
End Else
Result := OsUnknown;End;procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(strOsType[integer(GetOSVersion)]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
P:OSVERSIONINFO;
begin
P.dwOSVersionInfoSize := SizeOf(P);
GetVersionEx(P);
showmessage(p.szCSDVersion);
case p.dwMajorVersion of
3: ShowMessage('nt 3.51');
4:
begin
case p.dwMinorVersion of
0: if p.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
ShowMessage('95')
else
ShowMessage('nt 4.0');
10: ShowMessage('98');
90: ShowMessage('me');
end;
end;
5:
begin
case p.dwMinorVersion of
0: ShowMessage('Windows 2000');
1: ShowMessage('xp');
end;
end;end;
end;