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

前輩:我想在字符串形態變數的兩個漢字閒插入一個空格符,不知咋作

答題得分者是:yenhorng
zhczm888
一般會員


發表:17
回覆:6
積分:4
註冊:2002-11-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-19 19:37:35 IP:61.142.xxx.xxx 未訂閱
例: ver str1:string; i,j:integer; begin j:=1; str1:='tywtsdg張我批....'; //str1可能是很長並含有漢字,我想每隔20位插入一個空格, //但遇到是一個漢字前半部時,再向後移一位,方可插入空格 for i:=1 to length(str1) do begin if i=20*j thrn begin if {是漢字前半部} then i:=i 1; insert(' ',str1,i); //在第i位插入空格 j:=j 1; end; end; end; 請問:if {是漢字前半部} 咋寫 或用其他啥辦法解決 發表人 - zhczm888 於 2002/11/19 19:43:22 發表人 - zhczm888 於 2002/11/19 19:47:11
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-19 20:31:54 IP:61.221.xxx.xxx 未訂閱
請問一下你是寫有關類似短篇中英文章的系統嗎? 如果是 乾脆使用txt存檔 存入資料庫 或存路徑 比較方便 不知道對不對 我猜的
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
yenhorng
中階會員


發表:12
回覆:82
積分:94
註冊:2002-06-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-19 23:16:13 IP:61.61.xxx.xxx 未訂閱
//判斷某一個字元是否為中文的前導字元 function IsLeadByteTw(c:Char):Boolean; begin //根據附屬應用程式中的"字元對應表"計算而得 ($81 .. $FE) Result:=(c in [Char($81)..Char($FE)]); { //呼叫 Windows API 來計算 (但效率較差) Result:=IsDBCSLeadByte(Byte(c)); } end;
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-20 02:36:30 IP:211.74.xxx.xxx 未訂閱
問題別複雜化了,字串要宣告成WideString中英文都會被當成一個字來處理, 此段執行後,會在第20個字元處插入一空白
var
    a:WideString ;
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
    for i:=1 to Length(a) do
        begin
            if (i mod 20)=0 then
                insert(' ',a,i);
        end;
    self.Caption :=a;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
    a:='abc杜cd德一mmEST--abc杜cd德一ssTESTkk@@dddfddsgfgfdbme測試得dd';
end;
可額外參考這些資料 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20403 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20191 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20508 噓~~~~~~沉思中…
yenhorng
中階會員


發表:12
回覆:82
積分:94
註冊:2002-06-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-20 19:15:54 IP:61.61.xxx.xxx 未訂閱
引言: 問題別複雜化了,字串要宣告成WideString中英文都會被當成一個字來處理, 此段執行後,會在第20個字元處插入一空白
var
    a:WideString ;
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
    for i:=1 to Length(a) do
        begin
            if (i mod 20)=0 then
                insert(' ',a,i);
        end;
    self.Caption :=a;
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
    a:='abc杜cd德一mmEST--abc杜cd德一ssTESTkk@@dddfddsgfgfdbme測試得dd';
end;
可額外參考這些資料 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20403 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20191 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20508 噓~~~~~~沉思中…
但是遇到像QReport要設計自動折行時,宣告成WideString,在計算字數時,卻無法得知確實字串長度啊?
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-20 23:10:45 IP:211.74.xxx.xxx 未訂閱
引言: 但是遇到像QReport要設計自動折行時,宣告成WideString,在計算字數時,卻無法得知確實字串長度啊?
zhczm888兄的問題,我想依據他的意思,我的方式是可行的 而yenhorng 兄您有這樣的發現,不知您目前的做法是…? 可分享一下 噓~~~~~~沉思中…
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-20 23:44:21 IP:61.64.xxx.xxx 未訂閱
深度歷險 http://www.vclxx.org/DELPHI/AAAT102A.HTM Quick Report 2.0j 版之 BIG5 中文修補程式,修正 TQRDBText 元件的 AutoSize 屬性設為 True 時,資料庫內 BIG5 中文資料不會自動折行的問題,並將報表列印預覽及列印進度兩畫面中文化 ( 無原始程式碼 Delphi 3.0 適用 ),作者: 李匡正。修改:吳榮森。 ********************************************************************** 針對 Delphi 3.0x 版,修正 QuickReport 2.0J 版部分內容以適合 BIG-5 環境下使用,主要修正部分包含: (1) QRDBText 元件的 AutoSize 屬性設為 True 時,資料庫 BIG5 中文 資料不會自動折行。 (2) 報表列印預覽 ( PreView Reprot ) 畫面全部中文化。 (3) 列印進度 ( Print Progress ) 畫面全部中文化。 (4) 屬性編輯器中文化 安裝方法: (1) 將 BIG5QR20J.ZIP 解壓縮。 (2) 關閉 Delphi 3 。 (3) 將解開後目錄 \lib 下的檔案全部複製 至 \Program Files\Borland\Delphi 3\Lib 下,覆蓋原本舊版的 Quick Report 2.0c 版或 Quick Report 2.0g 版檔案。 (4) 將解開後目錄 \System 下的檔案全部複製 至 \Program Files\Borland\Delphi 3\Bin 下,覆蓋原本舊版的 Quick Report 2.0c 版或 Quick Report 2.0g 版檔案。 (5) 將解開後目錄 \System 下的檔案也複製 至 Windows 95 的 \Windows\System 下,或 Windows NT 的 \WinNT\Sysytem32 目錄下,覆蓋原本舊版的 Quick Report 2.0c 版或 Quick Report 2.0g 版檔案。 (6) 啟動 Delphi 3 即可。 注意: (1) Quick Report 2.0x Professional 版的用戶請勿使用此修正版。 (2) 這是免費軟體,您可以任意使用於任何用途及場合,但您必須自行稱承擔風險。 李匡正 (E-Mail Address :Tomm.bbs@csie.nctu.edu.tw) 吳榮森 (E-Mail Address :forests.bbs@bbs.cis.nctu.edu.tw) (http://ibmsrv.cc.nthu.edu.tw/DELPHI) 參考看看 不知是否可行
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
yenhorng
中階會員


發表:12
回覆:82
積分:94
註冊:2002-06-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-21 23:17:20 IP:61.61.xxx.xxx 未訂閱
引言:
引言: 但是遇到像QReport要設計自動折行時,宣告成WideString,在計算字數時,卻無法得知確實字串長度啊?
zhczm888兄的問題,我想依據他的意思,我的方式是可行的 而yenhorng 兄您有這樣的發現,不知您目前的做法是…? 可分享一下 噓~~~~~~沉思中…
我的方法(針對中文部分)就是使用上列之函數判斷我所要截斷之字元數(中數相混),若要截斷之前的字元為中文的前導字元,則少截一字元。這樣後續之中文字才可完整。若要截斷之前的字元為數字,則少截n個字元。 不知道有無更好的方法?
系統時間:2024-05-14 15:20:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!