TempELecEn : Boolean;    if TempELecEn = true then
        showmessage('error')
    else
        showmessage('error2');
    if  TempELecEn =False then      //如果没有碰到电气性能
        shomessage('error3');
     TempELecEn = false 时 结果仅弹出error2....郁闷。
      
     有碰过类似问题的朋友吗?  教我怎么整死它。

解决方案 »

  1.   

    boolean有第三种可能
    因为boolean存储的值:0--fasle; 1--true; 2..255--其他
    所以如果在与其他语言进行调用时,最好用bytebool等
      

  2.   

        我用delphi写的,TempELecEn 以引用的方式 进入某段函数  在进行外围 的上述  处理
      

  3.   

    按照你的程序应该是
    TempELecEn   =   false   时   结果先弹出error2,点击“确定”后,再弹出error3
      

  4.   

    布尔值不可能有3种状态(如果有,就不是布尔值了)。当然,有些测试确实有2种以上的情况,可以自定义一个集合来描述。Delphi的Boolean类型本质也就是定义为{False, True}的集合
      

  5.   

    嗨,举个例子吧!!
    var
    TempELecEn   :   Boolean;  //应该这样定义TempELecEn   :   ByteBool;
    P:Pbyte;
    begin
      P:=@TempELecEn;
      P^:=2;   //分别设为0,1,2 看看结果
      if   TempELecEn   =   true   then
                    showmessage('error')
            else
                    showmessage('error2');
            if     TempELecEn   =False   then             //如果没有碰到电气性能
                    showmessage('error3');问题就出现在非delphi编写的程序对布尔存储的值定义不一样,一般0设为Fasle,非0设为True
    而delphi的Boolean 0--fasle;   1--true;   2..255--就不属于布尔这个集合了,也就是2..255不在[0,1] 里,也不可能属于其任何一个子集所以在与非delphi编写的程序里,定义成TempELecEn   :   ByteBool;
      

  6.   

    是否从数据表里取数据?数据表里的话,比如把字段类型为bool,而且允许空(NULL)那么就会碰到2种情况:
    -1 表示true
    0  表示false
    NULL
      

  7.   

        一介书生,半个农民,
             那我如何防止boolean型变量出现非true,false的情况。我的程序里未进行P:=@TempELecEn;
      P^:=2;   //分别设为0,1,2 看看结果
    类似这样的处理,如何造成产生非true,false的结果?  请赐教
      

  8.   

    对于LongBool,建议判断的办法不要使用if x=true,而换用if x<>false。