漢字信息按姓氏筆劃排序的實現方法和技巧 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
漢字信息按姓氏筆劃排序的實現方法和技巧HZ CHAR 2 HZCODE CHAR 2 {建立漢字--筆劃編碼表} hzsrc:Ttable;{按姓氏筆劃排序的全部漢字信息文本文件,在Delphi 中可將文本文件按Table處理} hzcodedb:Ttable; // 需生成的漢字--筆劃編碼數據庫 var tmp1,tmp2:string; i,k,j:integer; begin hzsrc.open; hzcoded8b.open; i:=0; tmp:='';tmp1:=''; Hzsrc.first; while not HzSrc.eof do begin i:=i 1; k:=(i div 100); tmp1:=char(k 23); //first char j:=i-k*100; tmp2:=char(j 23); //second char tmp:=tmp1 tmp2; hzcodedb.append; hzcodedb.edit; hzcodedb['hz']:=hzsrc['field1']; hzcodedb.fieldbyname('hzcode').asstring:=tmp; hzcodedb.post; hzsrc.next; end; hzcodedb.close hzsrc.close; end; 第三步:建立函數HZconvert( hzstring ),將指定的漢字信息字符串hzstring轉換成為按筆劃排序漢字的編碼字符串。 Fuction HZconvert( hzstring: string ) : string ; var hzorder:string; tmp:string; i,startindex:integer; begin i:=length(hzstring); startindex:=1; hzorder:=''; while (startindex<=i) do begin tmp:=copy(hzstring,startindex,2); startindex:=startindex 2; if hzcodedb.findKey([tmp]) then hzorder:=hzOrder hzcodedb['hzorder'] else hzorder:=hzOrder 'zz'; end; // end of while HZconvert:=hzorder; end;// end of function在開發應用程序的過程中,以姓名的姓氏筆劃排序為例,介紹HZconvert函數使用。 在數據庫結構中,應包括以下的兩項: 姓名(NAME) VARCHAR 30 姓名編碼(NAMEORDER) VARCHAR 30 VARCHAR是可變長字臟篜型,定義姓名為VARCHAR類型是考慮到姓名的長短不一,為了能既節約空間,又可以輸入較長的姓名,而定義姓名為VARCHAR類型。 Delphi中隻需在TTABLE元件的BeforePost 事件中加入以下的代碼就可生成姓名的筆劃編碼: table1['nameorder']:=HZconvert(table1['name']); 數據庫內容建立完畢後,設置NameOrder為Index,就實現了姓名的按姓氏筆劃排序。 (全文完) _________________________________________________________ 通訊地址: 陝西省西安市金花北路20號 西北電力設計院出版處 ( 710032 ) 任增勝(收) E-mail: csh@citi.xjtu.edu.cn shq@nwu.edu.cn 網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
ralph
初階會員 發表:41 回覆:82 積分:29 註冊:2003-02-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |