DataSetDetail.FieldByName('BADPUTON').AsBoolean  := (DataSetDetail.FieldByName('PUTAWAY_FLG').AsInteger and Floor(Power(2, 1)) > 0);
其中:DataSetDetail.FieldByName('PUTAWAY_FLG').AsInteger =1
 
那为什么返回的结果为FALSE?

解决方案 »

  1.   

    DataSetDetail.FieldByName('PUTAWAY_FLG').AsInteger and Floor(Power(2, 1)) > 0);
    你上面的表达式相当于这样:
    if (1 and 2>0)then
      showmessage('ok');
    按这样执行,是不会显示'OK'的.因为这样的表达式书写格式与想要的目的根本不同,逻辑运算级别要高于关系运算.因此.上面的表达式执行是这样的.
    1-->0001
    2-->0010
    求这两个操作数的"与"结果:0000;也就是得到了:0;
    0>0?,所以,在DELPHI中得到"FALSE";改成这样:
    if (1>0) and (2>0) then 
      showmessage('ok');