问一个or执行顺序的问题(30分)

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
S

siaosa

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么这个判断语句经常会出错?应该怎么改才好?<br>if (ADODataSet1.FieldValues['field1'] =NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//这个地方正常<br>&nbsp;or (ADODataSet1.FieldValues['field1'].AsString='') then &nbsp; //这个地方会出错,系统报异常
 
改成FieldByName().AsString好了
 
这个问题其实很简单<br>写成两条才可以<br>if (ADODataSet1.FieldValues['field1'] =NULL) &nbsp; &nbsp; then &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //这个地方正常<br>&nbsp;if &nbsp;(ADODataSet1.FieldValues['field1'].AsString='') then &nbsp; //这个地方会出错,系统<br><br>列:fm:Tform;<br>&nbsp; &nbsp; if (fm)=nil or (fm.name='XXX') &nbsp;then<br>&nbsp; &nbsp;如果你不初始化,肯定报错!
 
OR运算时,不是只要第一个条件为真,系统就不再判断第二个条件吗?
 
你说的很对 第一条为真就不判断第二条了
 
这个问题就是系统当第一个条件为真时,还去判断第二个条件了。
 
if (ADODataSet1.FieldValues['field1'] =NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//这个地方正常<br>&nbsp;or (ADODataSet1.FieldValues['field1'].AsString='') then ...<br><br>改为<br>if (ADODataSet1.FieldValues['field1'].IsNull) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//这个地方正常<br>&nbsp;or (ADODataSet1.FieldValues['field1'].AsString='') then ...<br>不知道可行否?
 
(ADODataSet1.FieldValues['field1'].AsString='') then &nbsp; 这一句改成<br>&nbsp;(VarAsType(ADODataSet1.FieldValues['field1'],varString) &nbsp;then &nbsp; 问题解决
 
后退
顶部