熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi用拼音首字符序列實現檢索功能

2013-11-23 17:40:57  來源: Delphi編程 

  在日常工作和生活中我們經常使用電子記事本查找個人通訊錄信息或在單位的應用程序中查詢客戶檔案或業務資料這個過程中往往需要輸入大量的漢字信息對於熟悉計算機的人這已經是一件頭疼的事那些不太熟悉計算機或根本不懂漢字輸入的用戶簡直就望而生畏作為對數據檢索技術的一種新的嘗試作者探索使用漢字拼音的首字符序列作為檢索關鍵字這樣用戶不必使用漢字只須簡單地鍵入要查詢信息的每個漢字的拼音首字符即可比如你想查找關鍵字中國人民銀行你只需要輸入zgrmyh作者希望通過下面的例子為廣大計算機同行起一個拋磚引玉的作用讓我們開發的程序更加便捷好用

  原理很簡單找出漢字表中拼音首字符分別為AZ的漢字內碼范圍這樣對於要檢索的漢字只需要檢查它的內碼位於哪一個首字符的范圍內就可以判斷出它的拼音首字符

  程序更簡單包括個控件一個列表存放著所有待檢索的信息一個列表用於存放檢索後的信息一個編輯框用於輸入檢索關鍵字(即拼音首字符序列)詳細如下

  .進入Delphi創建一個新工程Project

  .在Form上創建以下控件並填寫屬性

    控件類型      屬性名稱  屬性值
    Edit           Name      Search
    ListBox        Name      SourceList
    Items      輸入一些字符串如姓名等用於提供檢索數據
    ListBox        Name      ResultList
 


  .鍵入以下兩個函數

    // 獲取指定漢字的拼音索引字母的索引字母是H
    function GetPYIndexChar( hzchar:string):char;
    begin
    case WORD(hzchar[]) shl + WORD(hzchar[]) of
    $BA$BC : result := A;
    $BC$BC : result := B;
    $BC$BED : result := C;
    $BEE$BE : result := D;
    $BEA$BA : result := E;
    $BA$BC : result := F;
    $BC$BFD : result := G;
    $BFE$BBF : result := H;
    $BBF$BFA : result := J;
    $BFA$CAB : result := K;
    $CAC$CE : result := L;
    $CE$CC : result := M;
    $CC$CB : result := N;
    $CB$CBD : result := O;
    $CBE$CD : result := P;
    $CDA$CBA : result := Q;
    $CBB$CF : result := R;
    $CF$CBF : result := S;
    $CBFA$CDD : result := T;
    $CDDA$CEF : result := W;
    $CEF$D : result := X;
    $DB$DD : result := Y;
    $DD$DF : result := Z;
    else
    result := char();
    end;
    end;

    // 在指定的字符串列表SourceStrs中檢索符合拼音索引字符串
    PYIndexStr的所有字符串並返回
    function SearchByPYIndexStr
    ( SourceStrs:TStrings;
    PYIndexStr:string):string;
    label NotFound;
    var
    i j   :integer;
    hzchar :string;
    begin
    for i:= to SourceStrsCount do
    begin
    for j:= to Length(PYIndexStr) do
    begin
    hzchar:=SourceStrs[i][*j]
    + SourceStrs[i][*j];
    if (PYIndexStr[j]<>?) and
    (UpperCase(PYIndexStr[j]) <>
    GetPYIndexChar(hzchar)) then goto NotFound;
    end;
    if result= then result := SourceStrs[i]
    else result := result + Char
    () + SourceStrs[i];
    NotFound:
    end;
    end;
 

  .增加編輯框Search的OnChange事件

    procedure TFormSearchChange(Sender: TObject);
    var ResultStr:string;
    begin
    ResultStr:=;
    ResultListItemsText := SearchByPYIndexStr
    (SourcelistItems SearchText);
    end;
 

  .編譯運行後

  在編輯框Search中輸入要查詢字符串的拼音首字符序列檢索結果列表ResultList就會列出檢索到的信息檢索中還支持通配符對於難以確定的的文字使用替代位置可以實現更復雜的檢索

  本程序在Delphi中編譯運行通過


From:http://tw.wingwit.com/Article/program/Delphi/201311/24877.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.