求助字符统计问题中的一个bug, ( 积分: 5 )

  • 主题发起人 主题发起人 cf83325
  • 开始时间 开始时间
C

cf83325

Unregistered / Unconfirmed
GUEST, unregistred user!
先看看我的代码吧。。。。。。。

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
I,e,c:integer;//e是控制English的游标,c是控制chinese的游标
begin
s:=memo1.Text;
for I:=1 to Length(s) do
begin
if (Ord(s)>=33) and (Ord(s)<=126) then
begin
Inc(e);
//Label1.Caption:='英文数:'
Label1.Caption:=Inttostr(e)
end
else

if (Ord(s)>=127) then
begin
Inc(c);

Label2.Caption:=Inttostr(c div 2)
end;
end;

Label3.Caption:=IntToStr(StrToInt(Label1.Caption))+IntToStr(StrToInt(Label2.Caption));
//Label3.Caption:=IntToStr(StrToInt(Label1.Caption))+IntToStr(StrToInt(Label2.Caption));标记为语句<1>
{**************问题的所在地方就是在这里,没有语句<1>的时候,
比如我在memo1中输入'你好123'时,
label1.caption显示为字符统计为3, label2.caption显示为汉字统计为2.这是正常的。

但是加了标记语句<1>后,显示的并不是我要的统计结果5.这个问题怎么解决啊。我就是要做个字符统计功能啊。
跟中英文,符号都没有关系的。对于 str:='你好123'统计结果应该显示为5

********************************************************* }
end;

请问怎么解决问题啊。我试了又试啊。。郁闷了
 
Label3.Caption:=IntToStr(StrToInt(Label1.Caption)+StrToInt(Label2.Caption));
 
这个不行啊。莫非AscII和unicode返回的序号不能相加减?
 
我还顶。。等待解决的问题
 
用得着这么麻烦吗?
procedure TForm1.Button2Click(Sender: TObject);
var
ans : AnsiString;
wis : WideString;
sub : Integer; begin
ans := edit1.Text;
wis := WideString(ans);
showmessage('总个数是' + inttostr(Length(wis)));
showmessage('英文个数是' + inttostr(Length(wis) * 2 - Length(ans)));
showmessage('汉字的个数是' + inttostr( Length(ans) - Length(wis)));
end;
 
对,用WideString最方便了
---------------------------------------------------------------------------------------http://www.waibaoinfo.com 外包信息网 - 专业的外包项目发布和承接平台
 
power255解决的问题
 
后退
顶部