全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2214
推到 Plurk!
推到 Facebook!

delphi如何获得当前操作系统语言环境

答題得分者是:hagar
piaolingfeihu
一般會員


發表:7
回覆:12
積分:3
註冊:2007-06-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-22 12:36:10 IP:61.183.xxx.xxx 訂閱
小弟现在这儿表示感激,希望各位大哥帮忙解决我的问题!


小弟先前实现了了通过写ini文件实现了系统的多语言环境,但是现在小弟想每次 程序运行的时候获得当前的系统语言环境从而把相应的语言文件信息读取到界面上,希望各位大哥帮忙! 小弟将不胜感激!就是怎么样获得当前运行程序系统的语言环境!请各位大哥帮忙!
------
没有做不到,只有想不到!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-22 13:40:39 IP:59.124.xxx.xxx 未訂閱
使用 GetLocaleInfo 試試, 參考: http://www.swissdelphicenter.ch/torry/showcode.php?id=320    <textarea class="delphi" rows="10" cols="60" name="code"> function GetWindowsLanguage: string; var WinLanguage: array [0..50] of char; begin VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50); Result := StrPas(WinLanguage); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetWindowsLanguage); end; {********************************************************************} { another code: {********************************************************************} function GetWindowsLanguage(LCTYPE: LCTYPE {type of information}): string; var Buffer : PChar; Size : integer; begin Size := GetLocaleInfo (LOCALE_USER_DEFAULT, LCType, nil, 0); GetMem(Buffer, Size); try GetLocaleInfo (LOCALE_USER_DEFAULT, LCTYPE, Buffer, Size); Result := string(Buffer); finally FreeMem(Buffer); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Caption := GetWindowsLanguage(LOCALE_SABBREVLANGNAME); (* LOCALE_ILANGUAGE { language id } LOCALE_SLANGUAGE { localized name of language } LOCALE_SENGLANGUAGE { English name of language } LOCALE_SABBREVLANGNAME { abbreviated language name } LOCALE_SNATIVELANGNAME { native name of language } *) end; </textarea>
piaolingfeihu
一般會員


發表:7
回覆:12
積分:3
註冊:2007-06-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-22 14:38:15 IP:61.183.xxx.xxx 訂閱
首先感激您的回复!

1、您的方法我试过。我当前的系统是XP中文操作系统,但是所获得是String类型,显示中文,在我下一步程序中作判断的时候不好判断!

2、我使用了
GetOEMCP可以返回一个数值,这样可以有利于我的判断,但是我不确定的是,是不是所有国家的操作系统中的语言的这个ID号都是统一的,我怕一种操作系统有自己的一套编号,那样在使用这个函数感觉就不太好使了 !现在可以获取当前的系统的版本号 936 ,就是中文!

再次感激您的回复

------
没有做不到,只有想不到!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-23 19:44:21 IP:61.31.xxx.xxx 訂閱
用 GetSystemDefaultLangID 

回傳值等於
$0404 -> 繁體中文 台灣
$0c04 -> 繁體中文 香港
$1004 -> 新加坡
$0804 -> 簡體中文

語系定義一覽表
http://msdn2.microsoft.com/en-us/library/ms776294.aspx
piaolingfeihu
一般會員


發表:7
回覆:12
積分:3
註冊:2007-06-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-25 10:57:47 IP:61.183.xxx.xxx 訂閱
谢谢两位大哥,但是不知道怎么把分数给你们啊!
------
没有做不到,只有想不到!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-25 11:33:19 IP:122.124.xxx.xxx 未訂閱
在[將此問題結案]的按鈕旁邊有個ComboBox,
請指定答題得分者再按下[將此問題結案]的按鈕即可
piaolingfeihu
一般會員


發表:7
回覆:12
積分:3
註冊:2007-06-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-25 16:12:44 IP:61.183.xxx.xxx 訂閱
但是两位版主回答的都有道理只不过是两种方法,我真的难以取舍,确切的说就是两个人的答案都是对的,我怎么给他们分数平分一下阿!
------
没有做不到,只有想不到!
系統時間:2024-04-28 12:48:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!