Hawk_sun, 欢迎你来主持汉字研究。 --汉字研究3

孩皮妞野 2002-09-14 05:50:01
你给的代码我还没看. 是不是依依赖于MS PINYIN输入法?


如果用户没安装MS PINYIN会不会受影响?

理想状态, 不依赖于操作系统; [使用C++的locale?]


次之, 依赖且依赖于Windows 操作系统.

...全文
97 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
孩皮妞野 2002-09-18
  • 打赏
  • 举报
回复
请大家到:
http://www.csdn.net/expert/topic/1030/1030590.xml?temp=.8233911

hawk_sun在这里抖了很多猛料。
bufanxiong 2002-09-16
  • 打赏
  • 举报
回复
同意 cker(〖烟波浩淼三千里、人鬼殊途五百年〗) 的观点
Hawk_sun 2002-09-16
  • 打赏
  • 举报
回复
首先,感谢ALNG对我的信任,我想说两点:

1.在目前我知道的方法中,只有通过微软的输入法并且调用相应的API来获得汉语的拼音是最简单的,根据同样的道理也可以获得汉字的笔划子根。而且
用这种方法所支持的汉字是最多的,所包括的汉字不限于GBK或者GB2312。

2.作为一种研究方法,建议大家采用这种模式:
首先利用可以察看内部调用以及相互依赖关系分析的工具对字符映射表程序作分析,对里面的每一个函数,你可以在MSDN中查找该函数的用法以及解释,这样可能找到问题的突破口更简单。如果没有找到这个函数,证明这是Windows没有公开的API,那么我们需要去查阅微软内部开发人员写的book,里面或多或少都对某些问题作了隐喻说明。

3.从来没有一种办法是不需要努力的,所以说,要想整个过程不采用手工的办法是不可能的,关键是什么时候需要手工干预。能够借助API的我们尽量利用。

最后,这么多人对这个问题感兴趣是出于我意料之外的,我其实也是研究这个话题不久,而且方向在语音合成上,很多地方还在和你们一样在摸索!
孩皮妞野 2002-09-16
  • 打赏
  • 举报
回复
cker(〖烟波浩淼三千里、人鬼殊途五百年〗),

这件事我确实做的不漂亮。你说的这个方式很好,如果我早这样做,效果一定好得多。
孩皮妞野 2002-09-16
  • 打赏
  • 举报
回复
各位大哥, Hawk_sun找到了一些的API, 可能会比较方便的解决这个[类]问题。所以,我特地邀请他把他的成果拿来给大家检验和分享。

gfh21cn(葛凤华):就这个问题而言,快捷的方法应该是有的---起码在Windows下。 但是可以想象,微软公司最初做这些基础工作的时候,是没有什么捷径可走的。因此,有了计算机,并不能保证总能有不需要人工的快捷方法。

gfh21cn 2002-09-16
  • 打赏
  • 举报
回复
我认为不妥
有计算机还需要人工
其实这个研究,我想,
最重要的一点就是找到一个简单的
比较快捷的方法

如果说去一个一个数,那还有什么意义
  • 打赏
  • 举报
回复
ALng你写个方便的程序,给大家下载,分片数数就好了么。
好像美国佬的外星人信号分析的软件一样。21000个汉字,100个兄弟
一人200就搞定了....
耙子 2002-09-15
  • 打赏
  • 举报
回复
joshstone(软体动物)
alng 的问题能这么容易解决吗?

你楼上的代码,只能适用于 GB2312 编码的 一级字库,大约 3500个汉字,现在window都是gbk和unicode的,包含了大约 21000个汉字。
你说差多少?
joshstone 2002-09-15
  • 打赏
  • 举报
回复
这段代码是用来得到汉字的第一个字母拼音,不知道对你有用没有
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <assert.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool __fastcall In(int Lp, int Hp,int Value)
{
assert(Lp<=Hp);
return ((Value<=Hp)&&(Value>=Lp));
}

//参数:一个汉字
//返回值:该汉字的拼音
//---------------------------------------------------------------------------
char __fastcall GetPYChar(AnsiString HZ)
{
assert(HZ.Length()==2);
WORD Hi=WORD(HZ[1])<<8;
WORD Lo=BYTE(HZ[2]);
int n=Hi+Lo;
if (In(0xB0A1,0xB0C4,n)) return 'A';
if (In(0XB0C5,0XB2C0,n)) return 'B';
if (In(0xB2C1,0xB4ED,n)) return 'C';
if (In(0xB4EE,0xB6E9,n)) return 'D';
if (In(0xB6EA,0xB7A1,n)) return 'E';
if (In(0xB7A2,0xB8c0,n)) return 'F';
if (In(0xB8C1,0xB9FD,n)) return 'G';
if (In(0xB9FE,0xBBF6,n)) return 'H';
if (In(0xBBF7,0xBFA5,n)) return 'J';
if (In(0xBFA6,0xC0AB,n)) return 'K';
if (In(0xC0AC,0xC2E7,n)) return 'L';
if (In(0xC2E8,0xC4C2,n)) return 'M';
if (In(0xC4C3,0xC5B5,n)) return 'N';
if (In(0xC5B6,0xC5BD,n)) return 'O';
if (In(0xC5BE,0xC6D9,n)) return 'P';
if (In(0xC6DA,0xC8BA,n)) return 'Q';
if (In(0xC8BB,0xC8F5,n)) return 'R';
if (In(0xC8F6,0xCBF0,n)) return 'S';
if (In(0xCBFA,0xCDD9,n)) return 'T';
if (In(0xCDDA,0xCEF3,n)) return 'W';
if (In(0xCEF4,0xD188,n)) return 'X';
if (In(0xD1B9,0xD4D0,n)) return 'Y';
if (In(0xD4D1,0xD7F9,n)) return 'Z';
return char(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption=GetPYChar(Edit1->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{

}
//---------------------------------------------------------------------------
Sephil 2002-09-15
  • 打赏
  • 举报
回复
UP
Chxis 2002-09-15
  • 打赏
  • 举报
回复
gz
bufanxiong 2002-09-15
  • 打赏
  • 举报
回复
up,有机会看看再说吧
sjd163 2002-09-15
  • 打赏
  • 举报
回复
帮你up
耙子 2002-09-15
  • 打赏
  • 举报
回复
alng 好执著呀!
等我抽空一定继续研究。
我一般遇到这类不急于解决的问题,都是挂着,然后留意着,可能哪天一不留神就找到答案了。
allmywant 2002-09-15
  • 打赏
  • 举报
回复
Up
NowCan 2002-09-15
  • 打赏
  • 举报
回复
这好像真的没有什么好办法,只能做个数据库。我以前做手机输入法的时候深有体会。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧