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

copy('阿扁', 1, 1) 並不是"阿"字, 如何解決?

尚未結案
ejamesxu
一般會員


發表:1
回覆:0
積分:0
註冊:2004-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-15 20:05:42 IP:218.18.xxx.xxx 未訂閱
copy('阿扁', 1, 1) 並不是"阿"字, 如何解決?
TATSU
版主


發表:50
回覆:135
積分:62
註冊:2003-01-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-15 20:26:52 IP:219.77.xxx.xxx 未訂閱
你輸入了兩個中文字,中文字是佔用兩個位元, 你即是輸入了四個位元的字串,你這句的變成 了要求字串中由第一個位置開始,抽取一個位 元,如果你要抽取你輸入的字串(阿扁)內的 「阿」字,你要改成 copy('阿扁', 1, 2)
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-15 21:49:58 IP:218.32.xxx.xxx 未訂閱
插花一下, WideString 是以"字"為單位.    
procedure TForm1.Button1Click(Sender: TObject);
var ws:widestring;
begin
  ws := '阿扁';
  showmessage(copy(ws,1,1));
end;
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-16 09:39:47 IP:61.222.xxx.xxx 未訂閱
引言: 插花一下, WideString 是以"字"為單位.
procedure TForm1.Button1Click(Sender: TObject);
var ws:widestring;
begin
  ws := '阿扁';
  showmessage(copy(ws,1,1));
end;
原來如此.又上了一課
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-16 11:55:48 IP:210.243.xxx.xxx 未訂閱
你這種問題一定要先判斷首碼ASCII是不是大於128 如果是那就表示是中文字.... 那你就要抓兩位,如果不是那就OK只抓一位 所以"阿"的首碼大於128是中文.... 要抓兩位,當然這是你知道"阿"的第一碼是中文的開始 如果再你不確定的狀況下你就要跑回圈去判斷了,不然 你很可能會把字切一半OR抓了"阿"的後碼"扁"的前碼 出來可能會是另一個字OR亂碼 這是UNICODE和ASCII的差別啦剛也有人提了, WIN32平台是ASCII 所以一個中文字會兩碼 .NET平台是UNICODE所有的字都只有一碼 所以抓法會不同.... 以上是小弟所知....請指教
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-16 15:58:33 IP:219.144.xxx.xxx 未訂閱
ejamesxu 您好! 除了判斷首碼是否大於128這個方法外,您還可以函式:ByteType() 如果返回值是mbSingleByte,則是英文 如果返回值是mbLeadByte, 則是中文第一碼 如果返回值是mbTrailByte, 則是中文第二碼
系統時間:2024-05-17 15:31:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!