写了一个函数用来判断是否是数字的:
function HasNum(ss:string):bool;
var i:integer;
begin
for i := 1 To Length(ss) do
begin
if (ss[i]>='0') or (ss[i]<='9') then
result:=True
else
begin
break;
result:=FALSE;
end;
end;
end;
我把它放在implementation和{$R *.dfm}之间~~~
然后调用的代码是:
。。
isnum:=HasNum(edit3.Text);
if isnum=true then
query1.sql.Add('select * From xszl where 班级='''+combobox1.Text+''''+' and '+combobox3.Text+''''+edit3.Text+'''')
else showmessage('学号查询请输入数字!');
。。
编译后,系统提示:
Return value of function‘HasNum’might be undefind 望各位前辈指点一下,并提醒一下小弟在使用函数和过程中应注意的一些问题
先谢谢了~~!!

解决方案 »

  1.   

    Return value of function‘HasNum’might be undefind这仅仅是个警告信息,说明你的代码存在一条没有决定返回值的执行路径。
      

  2.   

    function HasNum(ss:string):bool;
    var i:integer;
    begin
      result:=True;
      for i := 1 To Length(ss) do
      begin
        if (ss[i]<'0') or (ss[i]>'9') then
        begin
          result:=FALSE; 
          break;//or Exit 也可以不加
        end;
      end;
    end;
      

  3.   

    删除你的break吧或者放到result:=FALSE; 
    后面,否则是可能没有返回值的啊!
      

  4.   

    你的那个函数只能返回True,无论SS的内容是什么
    (ss[i]>='0') or (ss[i]<='9')这个是永远成立的...begin
    break;
    result:=FALSE;//这句是永远不会执行的...
    end;
      

  5.   

    这个函数何必那么复杂呢?
    function HasNum(ss:string):bool;
    var 
     i:integer;
    Begin
     Try
      i:=StrToInt(ss);
      Result:=true;
     Except
      Result:=false;
     End;
    End;
      

  6.   

    同意“ turbozzh(涡轮超人) ”的说法。
      

  7.   

    >>turbozzh(涡轮超人)
    解其表不解其根,照你说的,何必要这个函数呢?
    TryStrToInt就行了啊...
      

  8.   

    function HasNum(ss:string):bool;
    var i:integer;
    {增加result的说明}
    begin
    for i := 1 To Length(ss) do
    begin
    {if (ss[i]>='0') or (ss[i]<='9') then 中的or改成and}
    if (ss[i]>='0') and (ss[i]<='9') then 
    result:=True
    else
    begin
    {break;这一句不用}
    result:=FALSE;
    end;
    end;
    HasNum:=result;{通过函数名返回值}
    end;