国际化(转换GB2312到Big5,Shift-JIS) |
|
helppass
一般會員 ![]() ![]() 發表:1 回覆:0 積分:0 註冊:2003-09-24 發送簡訊給我 |
转换GB2312到Big5,Shift-JIS和为国际化程序自动生成pas国际化源文件
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
請問一下各位有下載使用的人,我下載後用d7直接compile Demo.Dpr後,執行第二頁"?上??? BIG5 ?字",卻發生錯誤說,查了一下不知為何,
只知在 ch1 := Ord(n[1]);//做到這裏會發生錯誤,j=36時就掛了
但開啟作者大大編好的那隻demo.exe執行同樣的動作卻又正常,不知何解?
引言: Function TranslateGBK2BIG5byString(s:String):String; Label 1; Var i,j,k: Integer; t,u,n: String; ch1, ch2: Byte; Begin i := Length(s); t := ''; j := 1; TranslateGBK2BIG5byString := t; If i > 0 Then Begin While j <= i Do Begin n := MidStr(s, j, 1); try ch1 := Ord(n[1]);//做到這裏會發生錯誤,j=36時就掛了 except Showmessage(n inttostr(j)); end; If j 1 > i Then ch2 := 0 Else Begin n := MidStr(s, j 1, 1); ch2 := Ord(n[1]); End; If ((ch1 >= 129) And (ch1 <= 254)) Then Begin If (((ch2 >= 64) And (ch2 < 127)) Or ((ch2 > 127) And (ch2 <= 254))) Then Begin k := trunc((( ch1 - 129 ) * 191 (ch2 - 64)) * 2); If ((k > 48131) Or (k < 0)) Then Begin t := t Chr(ch1); Goto 1; End; u := ''; u := u Chr(Code[k]); u := u Chr(Code[k 1]); t := t u; Inc(j); End Else t := t Chr(ch1); End Else Begin t := t Chr(ch1); End; 1:Inc(j); End; TranslateGBK2BIG5byString := t; End; End; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |