Delphi中實現漢字拼音聲母查詢

2021-03-31 08:57:01 字數 3013 閱讀 4055

delphi中實現漢字拼音聲母查詢,unit**如下:

unit unit1;

inte***ce

uses

windows, messages, sysutils, classes, graphics, controls, forms, dialogs,

stdctrls;

type

tform1 = class(tform)

listbox1: tlistbox;

listbox2: tlistbox;

edit1: tedit;

label1: tlabel;

procedure edit1change(sender: tobject);

procedure formshow(sender: tobject);

procedure formdestroy(sender: tobject);

procedure edit1enter(sender: tobject);

procedure edit1exit(sender: tobject);

private

public

resultlist1:tstrings;

end;

varform1: tform1;

procedure searchbypyindexstr(pyindexstr :string);

implementation

function getpyindexchar(hzchar:string):string;

begin

case (word(hzchar[1]) shl 8 + word(hzchar[2])) of

$b0a1..$b0c4 : result :='a';

$b0c5..$b2c0 : result :='b';

$b2c1..$b4ed : result :='c';

$b4ee..$b6e9 : result :='d';

$b6ea..$b7a1 : result :='e';

$b7a2..$b8c0 : result :='f';

$b8c1..$b9fd : result :='g';

$b9fe..$bbf6 : result :='h';

$bbf7..$bfa5 : result :='j';

$bfa6..$c0ab : result :='k';

$c0ac..$c2e7 : result :='l';

$c2e8..$c4c2 : result :='m';

$c4c3..$c5b5 : result :='n';

$c5b6..$c5bd : result :='o';

$c5be..$c6d9 : result :='p';

$c6da..$c8ba : result :='q';

$c8bb..$c8f5 : result :='r';

$c8f6..$cbf9 : result :='s';

$cbfa..$cdd9 : result :='t';

$cdda..$cef3 : result :='w';

$cef4..$d1b8 : result :='x';

$d1b9..$d4d0 : result :='y';

$d4d1..$d7f9 : result :='z';

else

result := char(0);

end;

end;

procedure searchbypyindexstr(pyindexstr :string);

label notfound;

vari, j :integer;

hzchar :string;

begin

for i:=0 to form1.listbox1.items.count-1 do

begin

for j:=1 to length(pyindexstr) do

begin

hzchar :=form1.listbox1.items[i][2*j-1]+form1.listbox1.items[i][2*j];

if (pyindexstr[j] <>'?') and (uppercase(pyindexstr[j])<>getpyindexchar(hzchar)) then

goto notfound;

end;

form1.resultlist1.add(form1.listbox1.items[i]);

notfound:

end;

end;

procedure tform1.edit1change(sender: tobject);

begin

if edit1.text<>'' then

begin

listbox2.items.clear;

form1.resultlist1.clear;

searchbypyindexstr(edit1.text);

listbox2.items.addstrings(resultlist1);

end;

end;

procedure tform1.formshow(sender: tobject);

begin

resultlist1:=tstringlist.create;

end;

procedure tform1.formdestroy(sender: tobject);

begin

resultlist1.free;

end;

procedure tform1.edit1enter(sender: tobject);

begin

edit1.text:='';

end;

procedure tform1.edit1exit(sender: tobject);

begin

edit1.text:='請輸入聲母';

end;

end.

Delphi中處理漢字的方法

在delphi中一個漢字佔兩個位元組,各種字串處理函式,直接處理字串中漢字時經常會發生亂碼或不顯示。我在處理時也是弄了半天,到處找資料,一下是找到的幾種處理方法。在delphi7下測試通過。一.中文所用的字元全是雙位元組字元,英文所用的位元組全是單位元組字元,也就是mbsinglebyte。本例項是...

delphi 中 unicode 轉漢字 函式

近期用到這個函式,無奈沒有找到 delphi 自帶的,網上找了下 有類似的,沒有現成的,我需要的是 支援 u4f00 這種格式的,即前面帶標準的 u 於是改造了一下。下面是 解碼 函式 方便有需要的人吧,我自己也需要 unicode轉漢字 支援自動過濾非 unicode編碼,即非 unicode編碼...

delphi中URL的漢字編碼

show.asp?sort 全部 sortlevel 1 gorq 供 n 5 sitename 全部 img yes imgfile images dot g.gif 在delphi2010中,因為引入unicode的緣故,預設的成了3個 xx,導致我的程式出現問題,找了半天,每一個函式能夠實現全...

用Delphi7 0實現漂亮的漢字視窗

在視覺化開發的時代,窗體是絕大部分應用程式的核心,但是開發者也許已對windows一成不變的方形窗體感到厭煩。其實巧妙地使用api函式即可實現漢字形狀的窗體。本文的例項執行後將顯示一個由 電腦報 三個漢字作為外形的窗體。當然你還可以利用本期講的方法實現更有個性的漢字視窗。設計思路 1 使用begin...

CEGUI中的漢字顯示實現

幾日前,用 cegui 做介面,發現無法應用 cegui 的window 中settext 函式直接顯示中文。上網 google 一下,原來經過簡單的字元轉化可以顯示中文 偷著樂,cegui 太方便了 方法如下 引用 cegui 使用utf8 編碼格式。這就意味著我們可以很簡單的就顯示中文。1 弄個...