if (dbedit2.Text='"') or (dbedit2.Text='~') or (dbedit2.Text='!') or (dbedit2.Text='@') or (dbedit2.Text='#') or (dbedit2.Text='$') or (dbedit2.Text='%') or (dbedit2.Text='^') or (dbedit2.Text='&')  then
    begin
    showmessage('输入错误');
    exit;在线等……急,初学者的苦脑
输入单个字符时不报错,两个以上包含一个非法字符时不报错,急救

解决方案 »

  1.   

    输入单个字符时不报错,两个以上包含一个非法字符时不报错,急救
    -------------------------
    你说的啥意思啊.
    你是想检查输入的字符串中不能有 & ! ? $ 等字符吧.function ChectStr(Const S:String):Boolean;
    Const
      CO_ERRSTR=['"','`','!','@','#','$','%','^','&'];
    var
      i,L:Integer;
    begin
      Result:=True;
      L:=Length(S);
      for i:=1 to L do
        if S[i] in CO_ERRSTR then
        begin
          Result:=False;
          Break;
        end;
    end;if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');
      

  2.   

    想检查输入的字符串中不能有 & ! ? $ 等字符
    我上面的代码意思是输入单个非法字符时报错,两个字符时却不报错,求求各位老大帮帮忙
      

  3.   

    ZyxIp的方法已经帮你解决了呀
      

  4.   

    可是会报错啊,Statement expected but 'function' found
                  Declaration expected but 'if' found
    我把ZyxIp的方法复制过来就出现错误,谢谢楼上几位的帮忙
      

  5.   

    哥们当然不对了
    if (dbedit2.Text='"') or (dbedit2.Text='~') or (dbedit2.Text='!') or (dbedit2.Text='@') or (dbedit2.Text='#') or (dbedit2.Text='$') or (dbedit2.Text='%') or (dbedit2.Text='^') or (dbedit2.Text='&')  then
        begin
        showmessage('输入错误');
        exit;
       end;
    你这样,输入一个字符时,可以,当输入1个以上时他当然不可以,dbedit2.Text='"',如果我输入"a,这两个字符,它当然就不报错了,
      

  6.   

    怎么可能错呢? 我的函数名打错一个字是 应该是 CheckStr你不会连这两行也直接拷贝了吧.
    if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');
      

  7.   

    ZyxIp(绝望中...) 
    谢谢你的帮助,我是直接拷贝过来的,毕竟 是初学,
    if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');这两行代码复制过来了啊,怎么了?不行?那我应该怎么做,麻烦你了,
    也可以加我QQ:86690726
    在线WAITING YOU
      

  8.   

    procedure TfrmUser.BitBtn1Click(Sender: TObject);
    var
    i:integer;
    strtext,strvalue,bm:string;
    begin
    function CheckStr(Const S:String):Boolean;
    Const
      CO_ERRSTR=['"','`','!','@','#','$','%','^','&'];
    var
      i,L:Integer;
    begin
      Result:=True;
      L:=Length(S);
      for i:=1 to L do
        if S[i] in CO_ERRSTR then
        begin
          Result:=False;
          Break;
        end;
    end;if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');
      IF dbEDIT2.Text='' then
      begin
          showmessage('姓名不能为空!');
          exit;
      end;
      IF dbEDIT3.Text='' then
      begin
          showmessage('密码不能为空!');
          exit;
      end;    inherited; max.SQL.Clear;
     max.SQL.Add('select max(czybm) from public_czybm');
     max.Active:=true;
              //添加  i:=strtoint(dsmax.DataSet.Fields[0].Text)+1;
      bm:=inttostr(i);
      while length(bm)<4 do
      begin
          bm:='0'+bm;
      end;
      max.Active:=false;
      strtext:='insert into public_czybm(CZYBM,CZYMC,PASSWORD';
      strvalue:='values('''+bm+''','''+dbedit2.Text+''','''+dbedit3.Text+'''';   if dbcheckbox1.Checked=true then
      begin
            strtext:=strtext+',cbgl';
            strvalue:=strvalue+',1';
      end;
       if dbcheckbox2.Checked=true then
      begin
            strtext:=strtext+',HSFX';
            strvalue:=strvalue+',1';
      end;
       if dbcheckbox3.Checked=true then
      begin
            strtext:=strtext+',TJCX';
            strvalue:=strvalue+',1';
      end;
         if dbcheckbox4.Checked=true then
      begin
            strtext:=strtext+',DSXG';
            strvalue:=strvalue+',1';
      end;
        strtext:=strtext+') '+strvalue+')';
      max.SQL.Clear;
      max.SQL.Add(strtext);
     max.ExecSQL;
     max.Close;
     showmessage('保存成功,请返回!');
     query.Active:=false;
     query.Active:=true;
    end;
    这是保存按钮的全部代码,我把你的代码也复制进来了,就是报错哦。
      

  9.   

    已经解决了,可是还有一个问题,就是提示“输入错误”后,我应该怎么做呢,比如不执行数据库存任何操作,我是这样写:
    if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');
      exit;
    可是它执行数据库存的插入操作。
      

  10.   

    不建议你使用数据源在绑定组件.
    if False=CheckStr(dbedit2.text) then
    begin
      showmessage('输入错误');
      exit;
    end;
      

  11.   

    晕就一个字,
    if False=CheckStr(dbedit2.text) then
      showmessage('输入错误');
      exit;
    这样写,执行到exit不直接退出了啊,无论if成立不成立都exit