今天在處理一段程式的時候發現了一些異常情況,就是如果控制面板中的設定採用的是簡體中文,程式執行正常,但是如果採用了英文或者其它國家的設定系統就報錯誤。
一般發生這種錯誤主要是因為程式與控制面板中的本地設定關係太緊,例如日期格式、本地的金融符號等,但是我的程式是採用rc6的演算法進行一些字串的加密,如果加解密的兩端,本地設定不一樣,解出來的內容就不一致。
呵呵,我的解決辦法是限制使用者必須是在簡體中文的環境中使用,反正都是中國人使用,這樣我就偷懶了,採用的如下**。
讀取本地的語言碼
private
const
locale_user_default =&
h400
private
const
locale_ilanguage =&
h1private
declare
function
getlocaleinfo lib
"kernel32
"alias
"getlocaleinfoa
"(byval locale
aslong
, byval lctype
aslong
, byval lplcdata
asstring
, byval cchdata
aslong
) as
long
'獲得本地語言碼
private
function
getlocallanguagecode()
asstring
dimbuffer
asstring
*100
dimdl
aslong
#ifwin32
then
dl =getlocaleinfo(locale_user_default, locale_ilanguage, buffer, 99)
getlocallanguagecode
=lpstrtovbstring(buffer)
#endif
end function
'轉換字串
private
function
lpstrtovbstring(byval s
asstring
) as
string
dimnullpos
aslong
nullpos
=instr
(s,
chr(0))
ifnullpos
>
0then
lpstrtovbstring
=left
$(s$, nullpos -1
)else
lpstrtovbstring =""
endif
end function
'應用如下
ifgetlocallanguagecode
<>
"0804
"then
msgbox
"本地控制面板設定錯誤,必須將控制面板設定為中文簡體.
", vbcritical, "提示
"end
endif
這樣就限制使用者在規定的本地設定中進行操作,這個並不是很好的辦法,但是夠用就行了。
看你知道不知道之 別惹我Msgbox的Title
在vb6中,msgbox是比較討厭的,我在整理 的時候,通常要檢查每個msgbox的title是否正確,因為不同的程式設計師有不同的習慣,有些人也願意省略,到底有沒有辦法達到msgbox中title的統一呢?答 當然有辦法了,一種是在vb6的工程裡邊設定好工程的名稱,然後所有的msgbox全部全部省...
看你知道不知道之 你注意Where子句的次序了嗎?
這個系列越來越多的是和sql語句相關的問題了,因為這段時間工作和這個有關,呵呵,不管那麼多了,反正,都是和開發相關的問題,就繼續吧。我們通常不太注意sql語句中where子句的次序問題,但是這個次序往往會影響整個sql語句的執行效能,舉個例子吧。比如有乙個表有3個列,分別是班級 學號 姓名。表中的資...
不知道自己在幹啥
未命名 也沒有時間敲一些東西來寫點啥 最近的事情看似很忙,但是絕大部分時間還是用來,浪費在無聊且無意義的事情上 大學時光已經進入了中後期,所有人都很在意的學業技術上的問題,現在看來也不是最重要的問題,畢竟學什麼都有人給你規劃好了 你需要學啥也可以自己給自己安排好,只是不同人的執行力不相同罷了 學習基...