首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
亲,您未登录哦! 登录 | 注册

反查漢字拼音

打印文章

分享到:
var
  iHandleCount: integer;
  pList: array[1..nHKL_LIST] of HKL;
  szImeName: array[0..254] of char;
  i: integer;
  sFound: string;
begin
  lstComposition.Items.Clear;
  iHandleCount := GetKeyboardLayoutList(nHKL_LIST, pList);
  for i := 1 to iHandleCount do
  begin
    if ImmEscape(pList[i], 0, IME_ESC_IME_NAME, @szImeName) > 0 then
    begin
      sFound := QueryCompStr(pList[i], edtExam.Text);
      if sFound <> '' then
        lstComposition.Items.Add(StrPas(szImeName) + ': ' + sFound);
    end;
  end;
**************
金山词霸(2.0-2000版本)内有gb2py.idx和gbk2py.idx,内有国标
GB、GBK的每个汉字的拼音和声调。可用拿来一用。

下面上Delphi写的gb2py函数。
function gb2py(hanzi:pchar):pchar;
var
Sfile:Tmemorystream;
pos,temp,ipos,len:integer;
py:array[0..20] of char;
begin
  pos:=($fe-$a1)*(ord(hanzi[0])-$b0)+ord(hanzi[1])-$a1;
  sfile:=Tmemorystream.create;
  sfile.loadfromfile('C:\Program Files\KINGSOFT\XDICT\gb2py.idx');
  //data:=sfile.memory;
  sfile.Seek($1608+pos*4,soFromBeginning);
  sfile.Read(ipos,4);
  sfile.Read(temp,4);
  len:=temp-ipos;
  sfile.Seek(ipos+1,soFromBeginning);
  sfile.Read(py,len);
  py[len-1]:=#0;
  sfile.Free;
  result:=py;
end;

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章