算不算delphi 的 Bug(50分)

  • 主题发起人 主题发起人 xzsyz
  • 开始时间 开始时间
X

xzsyz

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个dll 其中一个是取汉字的拼音首字符函数声明如下
function asd(a:pchar):pchar;stdcall;
我在另外一个工程中调用时例:
edit1.text:=strpas(asd(pchar(edit2.text))) 如果edit2.text中有偶数个汉字时
则完全正确,但是如果是奇数个汉字时,则最后一个字的就取不出来,在跟踪调试时
asd(pchar(edit2.text))的值也是完全正确的。请朋友给提供一个解决方案!谢谢!
 
不要什么都推到Delphi的bug上,
十有八九是你的代码有问题,
因为这种功能的函数早就有人实现了
好好检查你的代码吧,

核心代码
如下:
function GetFirstPYChar( hz:string):char

begin
case WORD(hz[1]) shl 8 + WORD(hz[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..$D188 : result := 'X'

$D1B9..$D4D0 : result := 'Y'

$D4D1..$D7F9 : result := 'Z'

else
result := char(0)

end

end

 
我试了一下,如果这个函数放在一般的工程中是没有问题,关键是在dll 中出现的问题不知如何
我试了一下 strpas(pchar('dfdfdfdfd')却没问题!
 
string 默认是 ansistring,不支持双字节,改用widestring就可以了,我保证准行,
可别忘了给分啊!
 
提问一下,为什么好多汉字字库中没有?稍微生辟一点的就没有了
 
那是因为 delphi 的字体只支持英文字体
 
$CEF4..$D188 : result := 'X'

~
$CEF4..$D1B8 : result := 'X'

~
呵呵
 
GB二级字库只有6k多个汉字,肯定不够啦,用gbk或者m$的大字符集
 
多人接受答案了。
 
后退
顶部