小弟小白一个,字符串统计的问题,很弱的一个问题,请大神们帮忙。
本帖最后由 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:09 编辑
這行f:=AnsiChar(pAnsiString(str));拿掉
只接str看看
可以付檔案嗎?? 我也是怀疑是变更的问题,附件已经上传,谢谢你看一下。 本帖最后由 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;
這樣試試 末尾\0空字符?
页:
[1]