if Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15 or Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18 then
beginend;
目的就是判断“身份证号”是不是15位或者18位的,不是的话就执行下面的语句,
编译错误提示ncompatible types,我不知道哪里错啊,哈哈
谢谢!!

解决方案 »

  1.   

    if (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15) or (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18) then
    beginend;呵呵,这可能是个常犯的错误
      

  2.   

    最好简化一下:var
      iLen:integer;
    begin
      iLen:=Length(DataMdule1.AdoQryExamine.FieldbyName('身份证号').AsString);
      if (iLen<>15) and (iLen<>18) then
      begin
      end;
    end;不要用 or 哦,否则,永远不成立的 :)
      

  3.   

    要用括号把条件括起来,pascal中OR的优先级比<>高.要这样if (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15) or (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18) then
      

  4.   

    不能用or  用and 就行
      

  5.   

    ,用searoom(海龙)的,
    他的是对的
      

  6.   

    if (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15) or (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18) then
    beginend;
    少括号
    还有,你这样的代码,当刚好是15或者18时也会运行,注意是用OR 还是AND
      

  7.   

    晕死,楼主基本逻辑错误,不能是or,应该是and
    if Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15 and Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18 then
    beginend;
      

  8.   

    再说要用括号的
    if (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>15) and (Length(DataModule1.ADOQryExamine.FieldByName('身份证号').AsString)<>18) then
    beginend;