思路应该是先写字库,如下: 啊 16 1 ae 阿 16 2 ae 埃 16 3 az 挨 16 4 a 哎 16 5 a 唉 16 6 a 哀 16 7 a 皑 16 8 a 癌 16 9 a 蔼 16 10 a 矮 16 11 a 艾 16 12 ay 碍 16 13 a 爱 16 14 a 隘 16 15 ae 鞍 16 16 a 氨 16 17 a 安 16 18 a 俺 16 19 ay 按 16 20 a 暗 16 21 a 岸 16 22 a 然后根据各区的汉字进行操作~~~~~~~~~~。 type THZArr= array [16..87,1..94] of char; TPYtoHZ=class(TObject) protected HZArr:THZArr; function YGetPYIndexChar(hzchar:string):char; public returnDYZ: boolean; //是否返回多音字, 默认 true procedure GetHZarr; function SearchByPYIndex(SourceStrs:TStrings; PYIndexStr:string):Integer; end;
谢谢各位,也没人感兴趣吗?
google又搜不太到,我又不是宽,网费真叫那个贵 啊
查查msdn就可以找到一堆输入法相关的api,很简单的入手点吧 哈哈
这不是重点,关键是输入法查字的算法以及研究字库排布的规律上,这个当然不劳各位教我如何下手,但是这仍然是讨论的重点——大家有想法可以一起讨论,
现在我缺乏的是字库 gbk字库的排布范围,这样我就可以知道他们是如何分类以及让自己的输入法不会有缺字,这个是从事近一步研究的必要条件以上是我的想法,请大家不要笑
允许我喊一下:哪位有gbk和gb2312的资料啊???麻烦大家了
啊 16 1 ae
阿 16 2 ae
埃 16 3 az
挨 16 4 a
哎 16 5 a
唉 16 6 a
哀 16 7 a
皑 16 8 a
癌 16 9 a
蔼 16 10 a
矮 16 11 a
艾 16 12 ay
碍 16 13 a
爱 16 14 a
隘 16 15 ae
鞍 16 16 a
氨 16 17 a
安 16 18 a
俺 16 19 ay
按 16 20 a
暗 16 21 a
岸 16 22 a
然后根据各区的汉字进行操作~~~~~~~~~~。
type
THZArr= array [16..87,1..94] of char;
TPYtoHZ=class(TObject)
protected
HZArr:THZArr;
function YGetPYIndexChar(hzchar:string):char;
public
returnDYZ: boolean; //是否返回多音字, 默认 true
procedure GetHZarr;
function SearchByPYIndex(SourceStrs:TStrings; PYIndexStr:string):Integer;
end;
我的想法是 五笔编码肯定是有一定的规律 以方便排序的
否则的话 查找的效率很是个问题
线性查找可能是最慢的了 很难想象在一个不算小的文件里从第一个字开始依次查找存在于文件最末的字