delphi 2010 首拼函数不能用 以往首拼函数一字是两个字符,2010一字做为一个字符,函数运行无效,不知谁懂得处理,不吝赐教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看你用的什么数据类型了,用Pascal数据类型,比如ansistring,ansichar,不要用stirng,char 这是首拼函数function GetPYIndexChar( hzchar:string):string; var i, j :integer; hz :string;beginj:=0; while j<= Length(hzchar) do begin j:=j+1; if not(hzchar[j] in ['A'..'Z','a'..'z','0'..'9']) then begin j:=j+1; case WORD(hzchar[j-1]) shl 8 + WORD(hzchar[j]) of $B0A1..$B0C4 : hz :=hz+ 'A'; $B0C5..$B2C0 : hz :=hz+ 'B'; $B2C1..$B4ED : hz :=hz+ 'C'; $B4EE..$B6E9 : hz :=hz+ 'D'; $B6EA..$B7A1 : hz :=hz+ 'E'; $B7A2..$B8C0 : hz :=hz+ 'F'; $B8C1..$B9FD : hz :=hz+ 'G'; $B9FE..$BBF6 : hz :=hz+ 'H'; $BBF7..$BFA5 : hz :=hz+ 'J'; $BFA6..$C0AB : hz :=hz+ 'K'; $C0AC..$C2E7 : hz :=hz+ 'L'; $C2E8..$C4C2 : hz :=hz+ 'M'; $C4C3..$C5B5 : hz :=hz+ 'N'; $C5B6..$C5BD : hz :=hz+ 'O'; $C5BE..$C6D9 : hz :=hz+ 'P'; $C6DA..$C8BA : hz :=hz+ 'Q'; $C8BB..$C8F5 : hz :=hz+ 'R'; $C8F6..$CBF9 : hz :=hz+ 'S'; $CBFA..$CDD9 : hz :=hz+ 'T'; $CDDA..$CEF3 : hz :=hz+ 'W'; $CEF4..$D188 : hz :=hz+ 'X'; $D1B9..$D4D0 : hz :=hz+ 'Y'; $D4D1..$D7F9 : hz :=hz+ 'Z'; // else // result := char(0); end; end; end; result :=hz; 改过能用的源码,只能将String改成AnsiString就可以了function GetPYIndexChar(hzchar: AnsiString): string;var i, j: integer; hz: AnsiString;begin j := 0; while j <= Length(hzchar) do begin j := j + 1; if not(hzchar[j] in ['A' .. 'Z', 'a' .. 'z', '0' .. '9']) then begin j := j + 1; case WORD(hzchar[j - 1]) shl 8 + WORD(hzchar[j]) of $B0A1 .. $B0C4: hz := hz + 'A'; $B0C5 .. $B2C0: hz := hz + 'B'; $B2C1 .. $B4ED: hz := hz + 'C'; $B4EE .. $B6E9: hz := hz + 'D'; $B6EA .. $B7A1: hz := hz + 'E'; $B7A2 .. $B8C0: hz := hz + 'F'; $B8C1 .. $B9FD: hz := hz + 'G'; $B9FE .. $BBF6: hz := hz + 'H'; $BBF7 .. $BFA5: hz := hz + 'J'; $BFA6 .. $C0AB: hz := hz + 'K'; $C0AC .. $C2E7: hz := hz + 'L'; $C2E8 .. $C4C2: hz := hz + 'M'; $C4C3 .. $C5B5: hz := hz + 'N'; $C5B6 .. $C5BD: hz := hz + 'O'; $C5BE .. $C6D9: hz := hz + 'P'; $C6DA .. $C8BA: hz := hz + 'Q'; $C8BB .. $C8F5: hz := hz + 'R'; $C8F6 .. $CBF9: hz := hz + 'S'; $CBFA .. $CDD9: hz := hz + 'T'; $CDDA .. $CEF3: hz := hz + 'W'; $CEF4 .. $D188: hz := hz + 'X'; $D1B9 .. $D4D0: hz := hz + 'Y'; $D4D1 .. $D7F9: hz := hz + 'Z'; // else // result := char(0); end; end; end; result := hz;end; 有人提过的:http://topic.csdn.net/u/20100408/21/b645d447-d831-4072-bab6-28d6c7940100.html 我记得改动过可以在delphi2010下使用. 字符的问题,string是unicodestring2010保留了ansistring,要指明是此类型 我记得,D2010 的pas中有一个保留的专门用于AnsiString的只要在Use部分添加即可。或许就是叫 AnsiString.pas 可以搜索一下 D2010 的source目录。 大家一起来开发个开源2D网络游戏项目怎么样? 用DELPHI写三层数据库的问题 key violation问题,会的请进来指教下,谢谢! 能够获取数据感知控件修改数据的SQL语句吗? QRDBText居中问题 帮忙,如何使用TFrame控件 这段代码什么意思 急 关于动态创建和释放控件的问题 请教各位大虾,取本机的机器码是用什么函数啊? reportBuilder 打印数据超长 不能换页 计算机操作系统经典问题。 谁有适合DELPHI7+XP系统的DevExpress类全部控件安装包吗?
function GetPYIndexChar( hzchar:string):string;
var
i, j :integer;
hz :string;
begin
j:=0;
while j<= Length(hzchar) do
begin
j:=j+1;
if not(hzchar[j] in ['A'..'Z','a'..'z','0'..'9']) then
begin
j:=j+1;
case WORD(hzchar[j-1]) shl 8 + WORD(hzchar[j]) of
$B0A1..$B0C4 : hz :=hz+ 'A';
$B0C5..$B2C0 : hz :=hz+ 'B';
$B2C1..$B4ED : hz :=hz+ 'C';
$B4EE..$B6E9 : hz :=hz+ 'D';
$B6EA..$B7A1 : hz :=hz+ 'E';
$B7A2..$B8C0 : hz :=hz+ 'F';
$B8C1..$B9FD : hz :=hz+ 'G';
$B9FE..$BBF6 : hz :=hz+ 'H';
$BBF7..$BFA5 : hz :=hz+ 'J';
$BFA6..$C0AB : hz :=hz+ 'K';
$C0AC..$C2E7 : hz :=hz+ 'L';
$C2E8..$C4C2 : hz :=hz+ 'M';
$C4C3..$C5B5 : hz :=hz+ 'N';
$C5B6..$C5BD : hz :=hz+ 'O';
$C5BE..$C6D9 : hz :=hz+ 'P';
$C6DA..$C8BA : hz :=hz+ 'Q';
$C8BB..$C8F5 : hz :=hz+ 'R';
$C8F6..$CBF9 : hz :=hz+ 'S';
$CBFA..$CDD9 : hz :=hz+ 'T';
$CDDA..$CEF3 : hz :=hz+ 'W';
$CEF4..$D188 : hz :=hz+ 'X';
$D1B9..$D4D0 : hz :=hz+ 'Y';
$D4D1..$D7F9 : hz :=hz+ 'Z';
// else
// result := char(0);
end; end; end;
result :=hz;
var
i, j: integer;
hz: AnsiString;
begin
j := 0;
while j <= Length(hzchar) do
begin
j := j + 1;
if not(hzchar[j] in ['A' .. 'Z', 'a' .. 'z', '0' .. '9']) then
begin
j := j + 1;
case WORD(hzchar[j - 1]) shl 8 + WORD(hzchar[j]) of
$B0A1 .. $B0C4:
hz := hz + 'A';
$B0C5 .. $B2C0:
hz := hz + 'B';
$B2C1 .. $B4ED:
hz := hz + 'C';
$B4EE .. $B6E9:
hz := hz + 'D';
$B6EA .. $B7A1:
hz := hz + 'E';
$B7A2 .. $B8C0:
hz := hz + 'F';
$B8C1 .. $B9FD:
hz := hz + 'G';
$B9FE .. $BBF6:
hz := hz + 'H';
$BBF7 .. $BFA5:
hz := hz + 'J';
$BFA6 .. $C0AB:
hz := hz + 'K';
$C0AC .. $C2E7:
hz := hz + 'L';
$C2E8 .. $C4C2:
hz := hz + 'M';
$C4C3 .. $C5B5:
hz := hz + 'N';
$C5B6 .. $C5BD:
hz := hz + 'O';
$C5BE .. $C6D9:
hz := hz + 'P';
$C6DA .. $C8BA:
hz := hz + 'Q';
$C8BB .. $C8F5:
hz := hz + 'R';
$C8F6 .. $CBF9:
hz := hz + 'S';
$CBFA .. $CDD9:
hz := hz + 'T';
$CDDA .. $CEF3:
hz := hz + 'W';
$CEF4 .. $D188:
hz := hz + 'X';
$D1B9 .. $D4D0:
hz := hz + 'Y';
$D4D1 .. $D7F9:
hz := hz + 'Z';
// else
// result := char(0);
end;
end;
end;
result := hz;
end;
http://topic.csdn.net/u/20100408/21/b645d447-d831-4072-bab6-28d6c7940100.html
2010保留了ansistring,要指明是此类型
只要在Use部分添加即可。
或许就是叫 AnsiString.pas 可以搜索一下 D2010 的source目录。