線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3474
推到 Plurk!
推到 Facebook!

簡繁轉換

答題得分者是:flyup
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-24 17:08:20 IP:210.70.xxx.xxx 訂閱

你好,我想請問簡體繁體是如何轉換的。

轉換的運算邏輯又是什麼???

flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-25 12:12:08 IP:218.162.xxx.xxx 訂閱

丫里丫豆!!

YA~作業可以交嚕~~~~~~~~~~~~~~~~~~~~~~

doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-25 15:04:11 IP:218.162.xxx.xxx 訂閱

請問一下.....運算邏輯是什麼???

function findbig5(n:integer):string;
var a,b,i,m,j:integer;
f:boolean;
c1,c2:char;
begin
a:=0; b:=13468;
i:=(a b) shr 1;
f:=false;
while not f do
begin
m:=map[i][1];
if n=m then
begin
f:=true;
m:=map[i][2];
for j:=i downto 0 do
begin
if map[j][1]=n then m:=map[j][2]
else break;
end;
break;
end
else if n>m then
begin
a:=i 1;
end
else
begin
b:=i-1;
end;
i:=(a b) shr 1;
if a>b then break;
end;
if not f then m:=n;
c1:=chr(m shr 8);
c2:=chr(m mod 256);
result:=c1 c2;
end;
function gb2big5(s:string):string;
var s2:string;
i:integer;
c1,c2,c3:integer;
begin
s2:='';
c1:=0; c2:=0;
for i:=1 to length(s) do
begin
c1:=ord(s[i]);
if c2<>0 then
begin
c3:=(c2 shl 8) c1; //c2 shl 8 c1<--這裡是在運算什麼? 運算結果是16位元嗎?
s2:=s2 findbig5(c3);
c1:=0; c2:=0;
end
else
if c1>=128 then
begin
c2:=c1;
end
else s2:=s2 s[i];
end;
result:=s2;
end;

doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-25 15:04:48 IP:218.162.xxx.xxx 訂閱

請問一下.....運算邏輯是什麼???

function findbig5(n:integer):string;
var a,b,i,m,j:integer;
f:boolean;
c1,c2:char;
begin
a:=0; b:=13468;
i:=(a b) shr 1;
f:=false;
while not f do
begin
m:=map[i][1];
if n=m then
begin
f:=true;
m:=map[i][2];
for j:=i downto 0 do
begin
if map[j][1]=n then m:=map[j][2]
else break;
end;
break;
end
else if n>m then
begin
a:=i 1;
end
else
begin
b:=i-1;
end;
i:=(a b) shr 1;
if a>b then break;
end;
if not f then m:=n;
c1:=chr(m shr 8);
c2:=chr(m mod 256);
result:=c1 c2;
end;
function gb2big5(s:string):string;
var s2:string;
i:integer;
c1,c2,c3:integer;
begin
s2:='';
c1:=0; c2:=0;
for i:=1 to length(s) do
begin
c1:=ord(s[i]);
if c2<>0 then
begin
c3:=(c2 shl 8) c1; //c2 shl 8 c1<--這裡是在運算什麼? 運算結果是16進位的嗎?
s2:=s2 findbig5(c3);
c1:=0; c2:=0;
end
else
if c1>=128 then
begin
c2:=c1;
end
else s2:=s2 s[i];
end;
result:=s2;
end;

doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-25 15:07:22 IP:218.162.xxx.xxx 訂閱

還有就是.......要怎麼刪除? (不好意思~我是新手請多包含!!)

flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-07-25 20:26:28 IP:219.70.xxx.xxx 未訂閱
自己找拉..繼續下去安內不好喔
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-07-27 10:00:36 IP:211.21.xxx.xxx 未訂閱


感謝 flyup 提供,剛好我前陣子也在找此函式但沒找到說。

K.top 重新開張,真是令人振奮的好消息,偶然在這裡找到了需要的函式,謝謝啦。

------
JackTasy
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-07-27 10:07:41 IP:211.21.xxx.xxx 未訂閱

補充依下,doraemonloves 若想知道邏輯規則的話,不建議直接去看 Code 來了解,應該去網路上找其理論規則的文件。因為程式碼常常是導完公式後的簡化公式罷了。

我曾經在紙上計算三角函數和微積分,算了快十大張A4的紙,最後導出只有幾行運算式而已,光看該運算式是不可能知道推導原理及過程的。

以上提供參考。

------
JackTasy
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-07-27 12:18:18 IP:210.70.xxx.xxx 訂閱
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#11 引用回覆 回覆 發表時間:2006-07-27 12:19:50 IP:210.70.xxx.xxx 訂閱
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2006-07-27 12:21:53 IP:210.70.xxx.xxx 訂閱
doraemonloves
一般會員


發表:5
回覆:10
積分:3
註冊:2006-07-24

發送簡訊給我
#13 引用回覆 回覆 發表時間:2006-07-27 12:25:32 IP:210.70.xxx.xxx 訂閱

其實我就是要找轉換的原理規則,我也很清楚Function若沒有說明運算是不可能懂的。

就像我之前寫過一個身份證產生器的程式,在寫Function時就是有檢查碼須要運算驗證,

我是在友人的建議下才到這個論壇上尋找此說明的。(= =lll)

tonny2003
一般會員


發表:5
回覆:2
積分:1
註冊:2005-09-13

發送簡訊給我
#14 引用回覆 回覆 發表時間:2006-08-05 10:25:05 IP:218.17.xxx.xxx 未訂閱

我下载了senfore_chinese_v1.0.rar档案,但在应用时出现这样一个问题

Edit1.Text:=GB2Big5(Edit1.Text); //在繁体系统中运行Edit1.Text正确显示繁体字

Label1.Caption:=GB2Big5(Label1.Caption); //在繁体系统中运行Label1.Caption显示乱码,应该怎么解决?


===================引 用 文 章===================

Big52GB GB2Big5 GBCht2Chs GBChs2Cht 內碼轉換 簡繁體轉換

http://www.2ccc.com/go.asp?id=2442&url=http://sd.2ccc.com/downloads/simples/applications/senfore_chinese_v1.0.rar

http://www.2ccc.com/go.asp?id=2442&url=http://downloads.2ccc.com/simples/applications/senfore_chinese_v1.0.rar

hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2006-08-09 21:16:41 IP:218.174.xxx.xxx 未訂閱
charset 要改
wangwb_1027
一般會員


發表:6
回覆:13
積分:3
註冊:2006-07-06

發送簡訊給我
#16 引用回覆 回覆 發表時間:2006-08-25 13:36:58 IP:61.66.xxx.xxx 未訂閱

我下载了senfore_chinese_v1.0.rar档案 但是不知道如何使用。請哪位大大幫幫小弟,小弟很急。

我寫的代碼如下:我從資料庫中查詢出來的文字是亂碼。我的系統是繁體WIN2000

procedure TForm1.BitBtn1Click(Sender: TObject);
var sql1:string;
begin
query1.SQL.Clear;
query1.SQL.Add('select op_no,descr from poordd where op_no="po950300096"');
query1.Prepare;
query1.Open;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DB1.DriverName:='MSSQL';
DB1.Params.Clear;
DB1.Params.Add('SERVER NAME=MIS-08');
DB1.Params.Add('DATABASE NAME=newtest');
DB1.Params.Add('USER NAME=sa');
DB1.DatabaseName:='MSQL';
DB1.LoginPrompt:=false;
DB1.Connected:=TRUE;
Query1.DatabaseName:='MSQL';
Query1.RequestLive:=False;
tntDBGrid1.ReadOnly:=true;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
i:integer;
xlsfile:string;
elcapp,workbook:variant;
begin
savedialog1.Execute;
xlsfile:=savedialog1.filename;
elcapp:=Createoleobject('excel.application');
workbook:=createoleobject('excel.sheet');
workbook:=elcapp.workbooks.add;
elcapp.cells(1,1):='採購單號';
elcapp.cells(1,2):='備注';
query1.First;
for i:=0 to query1.recordcount-1 do
begin
elcapp.cells(i 2,1):=query1.fieldbyname('op_no').asstring;
elcapp.cells(i 2,2):=query1.fieldbyname('descr').asstring;
query1.Next;
end;
workbook.saveas(xlsfile);
workbook.close;
showmessage('恭喜你,轉出成功\');
end;

end.

系統時間:2024-04-24 4:06:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!