怎么写一个判断string类型的字符串是否包含非数字的函数。(50分)

  • 主题发起人 主题发起人 liujzi
  • 开始时间 开始时间
L

liujzi

Unregistered / Unconfirmed
GUEST, unregistred user!
想判断EDIT。TEXT是否输入非数字,如下:
if 。。。。。 then
begin
application.MessageBox('请输入数值','提示',MB_OK);
exit;
end
怎么写判断一个string类型的字符串是否包含非数字的函数。谢谢!
 
其实这样更简单:
procedure TfrmMain.Edit1KeyPress(Sender: TObject
var Key: Char);
begin
if ((key<'0') or (key>'9'))and (key<>#8) then key:=#0;
end;
 
楼上这样不是一个好办法, 还要看如果可以是小数, ...还是转一下你想要的类型,出错就不对的好,
 
不是这样,我就要这种形式的,因为我要加很多EDIT。TEXT判断。谢谢!
 
1。将字符串的空格全部去掉,
2。判断是否存在“-”号,检查是否在第一个,
3。然后判断是否存在“.”,“.”不可以在1和最后,
4。最后看是否有不是0-9之间的符号。
ok,应该没有什么问题吧!
www.iligia.com
 
能不能写个例子,谢谢!
 
这个似乎更简单:
procedure TForm1.FormCreate(Sender: TObject);
begin

SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);

end;
 
我需要的是完成类似功能的一个函数,我程序的格式也只能这样。让这个函数返回一个布尔值,然后
再做判断。谢谢!
 
其实已答问题里有非常多的答案,例如:

function CheckNumValide(Numstring:string):Boolean

begin
Result:=True

try
StrToFloat(Numstring)

except
on EConvertError do Result:=False

end

end


注意这个函数在调试时会报错,但不影响它独立运行(脱离Delphi IDE环境运行)。
 
procedure TForm1.Button1Click(Sender: TObject);
var
code:Integer;
x:real;
begin
val(edit1.text,x,code);
if code<>0 then showmessage('含非数字字符!');
end;
 
FUNCTION FkNumberStringTest(vString:STRING):BOOL;
VAR sTemp:STRING
k:INTEGER;
BEGIN
Result:=FALSE
sTemp:='';
FOR k:=1 TO LENGTH(vString) DO
BEGIN IF vString[k]=' ' THEN CONTINUE
sTemp:=sTemp+vString[k];END;
IF POS('-',sTemp)<>0 THEN BEGIN IF sTemp[1]<>'-' THEN Exit
END;
IF POS('.',sTemp)<>0 THEN BEGIN IF (sTemp[1]='.')OR(sTemp[LENGTH(sTemp)]='.') THEN Exit
END;
FOR k:=1 TO LENGTH(sTemp) DO
BEGIN IF (sTemp[k]='-')OR(sTemp[k]='.') THEN CONTINUE;IF (sTemp[k]<'0')OR(sTemp[k]>'9') THEN Exit
END;
Result:=TRUE;
END;
如何?
 
多人接受答案了。
 
如果看不懂,看一下我们编程标准。
http://www.iligia.com/chinese/documents/program/pstandard.htm
 
function isnum(str:string):boolean;
var
code:Integer;
x:real;
begin
val(str,x,code);
if code<>0 then result:=false
else result:=true;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
if not isnum(edit1.text) then showmessage('不是有效的浮点数!');
end;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部