汉字拼音首字母完全解决方案(无错误) ( 积分: 50 )

  • 主题发起人 主题发起人 凤冠坡
  • 开始时间 开始时间

凤冠坡

Unregistered / Unconfirmed
GUEST, unregistred user!
本论坛发布的其他解决方案不是不足就是不能解决问题,
而且让人看了也不明白是什么回事,本人采取直接取微软的
拼音编码库的方法来实现这一功能,而且方法简单:
微软的拼音字库编码是:汉字1的拼音,汉字2的拼音,汉字3的拼音,....
也就是只列出单个汉字的拼音,那么就要求对应汉字必须是
有序的,什么汉字才有序呢,UniCode 字符集就是。
在 Delphi 里,就是WideChar和WideString.
WideChar(19966 + 1)就对于汉字“一”;
WideChar(19966 + 2)就对于汉字“丁”;
WideChar(19966 + 3)就对于汉字“丂”;
......................
WideChar(19966 + 20901)就对于汉字“龤”;//可能有误差
WideChar(19966 + 20902)就对于汉字“龥”;//可能有误差
把这20902个汉字的拼音放到数据库 WinPY.MB 里面就是微软
拼音输入法的基础。拼音自从 WinPY.MB 文件偏移 $3B0A 起
每个字的拼音占用 12 个WideChar,即 24 字节,连续排放。
很容易写一小段程序实现汉字对应拼音首字母。
本人正在写,大概2小时后可以完成,需要的请尽快。
该功能有2个方法实现,一种是完全内存模式,一种是数据库
存放拼音首字母模式(供以后快速调用)。
 
谢了,楼主
luo03282@126.com
 
ttapeng@163.com
谢谢
 
已经向二位发送程序。
 
socid@msn.com
谢谢!
 
kfpjava@163.com
Thanks!~
 
zlj_2009@163.com
3Qvlmuch!
(#__
)
(#
 
一则不可还原的单向加密算法:(自创)
function EncodeStr(S: string): string;
var
I, J: Integer;
I1, I2: Byte;
begin
I1 := 1;
I2 := 2;
J := Length(S);
for I := 1 to Length(S)do
begin
I1 := I1 + Ord(S) * I;
I2 := I2 + Ord(S) * J;
J := J - 1;
end;
while Length(S) < 16do
S := S + Chr(64 + Length(S));
S := Copy(S, 1, 16);
for i := 1 to 16do
begin
Dec(I1, I);
Inc(I2, I);
if Odd(I) then
Dec(S, I1) else
Inc(S, I2);
while S > #90do
Dec(S, 17);
while S < #65do
Inc(S, 13);
end;
Result := S;
end;
 
文件唯一性(防修改)函数:
function Summer(S: string): Int64;
type
Buffer = array[1..5000000] of byte;
var
F1: TFileStream;
buf: ^Buffer;
i, n: integer;
M: real;
begin
F1 := TFileStream.Create(S, FMSHAREDENYNONE or FMOPENREAD);
n := F1.Size;
GetMem(buf, n);
F1.ReadBuffer(buf^, n);
F1.Free;
M := 0;
for i := 1 to ndo
M := M + n * Buf^ / n / n;
FreeMem(buf, n);
result := Round(Frac(M) * 1E10);
end;
//---------------------------
if Summer(F1) <> MYSize then
TellME('文件已经被非法修改');
//---------------------------
 
///////////
//WideChar(19966 + 20901)就对于汉字“龤”;//可能有误差
功能太差了,不需要
 
全部简繁汉字的拼音都有,
什么叫功能差?你是不是程序员?
 
學習````
jiyuhui1984@136.com
謝謝!
 
感兴趣,
看看效果如何
 
感兴趣,
看看效果如何
 
dinggwemail@126.com
拜读一下
 
研究一下
wuyongzhen26@yahoo.com
 
shao000wei@163.com
谢谢楼主
 
suyi3026@tom.com
 
我想要,樓主
suyi3026@tom.com
 
这方法好象有点问题吧?
有 UniCode:6709 得到的拼音是wei
个 UniCode:4E2A 得到的拼音是gan
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部