wangwf50 发表于 2016-11-10 10:53:34

小弟小白一个,字符串统计的问题,很弱的一个问题,请大神们帮忙。

本帖最后由 wangwf50 于 2016-11-17 14:41 编辑

自己写了一个统计edit.text中输入的文本,统计其它字母、数字、空格和其它字符个数的小程式代码如下:
var z,s,k,o,n,i:Integer;
    str:string; f:AnsiChar;
begin
    n:=Length(edtinput.Text);
    for i:= 1 to n do
    begin
         str:=Copy(Trim(edtinput.Text),i,1);
         f:=AnsiChar(pAnsiString(str));
       if(f in ['a'..'z']) or (f in ['A'..'Z']) then z:=z+1
       else if f in ['0'..'9'] then s:=s+1
       else if f = ' ' then k:=k+1
       else o:=o+1;
    end;
      lblshow.Caption:='你输入的字符: '+inttostr(z)+'个; 数字:'+inttostr(s)+'个;'
                      +'空格'+inttostr(k)+'个; '+'其它字符:'+inttostr(o)+'个;';

end;

但运行时,不管输入什么,都会统计到其它字符中。比如我输入的都是数字,但也是一样统计到了其它字符中,请大神们赐教。

附件是源代码。

bowk 发表于 2016-11-12 21:07:46

本帖最后由 bowk 于 2016-11-12 21:09 编辑

這行f:=AnsiChar(pAnsiString(str));拿掉
只接str看看
可以付檔案嗎??

wangwf50 发表于 2016-11-17 14:44:41

我也是怀疑是变更的问题,附件已经上传,谢谢你看一下。

bowk 发表于 2016-11-19 20:31:07

本帖最后由 bowk 于 2016-11-19 20:39 编辑

wangwf50 发表于 2016-11-17 14:44
我也是怀疑是变更的问题,附件已经上传,谢谢你看一下。

Z:=0;
S:=0;
k:=0;
O:=0;
    n:=Length(edtinput.Text);
    for i:= 1 to n do
    begin
         str:=Copy(Trim(edtinput.Text),i,1);
          f:=AnsiChar(str);

       if(f in ['a'..'z']) or (f in ['A'..'Z']) then z:=z+1
       else if f in ['0'..'9'] then s:=s+1
       else if f = ' ' then k:=k+1
       else o:=o+1;
    end;

這樣試試

rebellion51 发表于 2016-11-20 01:39:34

末尾\0空字符?
页: [1]
查看完整版本: 小弟小白一个,字符串统计的问题,很弱的一个问题,请大神们帮忙。