奇怪的问题,为什么语句不执行?(100分)

  • 主题发起人 主题发起人 netfool
  • 开始时间 开始时间
N

netfool

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是代码:
代码:
  function IsFieldValueMatch(const Value: Integer): Boolean;
  var
    V: Variant;
  begin
    V := Dataset.FieldByName(KeyValues[Value]).Value;
    Result := False;
    case FindOperatorArray[Value] of
      foEqual: Result := SameText(V, sa[Value]);
      foLike: Result := AnsiPos(V, sa[Value]) > 0;
      foLessThan: Result := V <= sa[Value];
      foLargeThan: Result := V >= sa[Value];
    end;
  end;

  function DoLocate: Boolean;
  var
    I: Integer;
    B: Boolean;
  begin
    Result := False;
    for I := Low(sa) to High(sa) do
    begin
      B := IsFieldValueMatch(I)
 // 这行不执行
      Result := B and Result;
    end;
  end;

如上代码,有标识的那行,运行时设置断点,断点标识为打X,行跟踪时直接跳过这行代码了 :(
怎么也不执行这行代码,无法跟踪进入函数IsFieldValueMatch
 
那个自定义函数有问题。
 
Result := False;
...
Result := B and Result;
Result 永远是False,你改成True试试。
 
回: jennykiller

还是不行 [:(]
 
你的代码很可能有非法字符(从QQ里复制出来 的),用文本文件打开看一下,是不是有黑块什么的。
我昨天也碰到这样的问题。
 
被优化掉了,不论B是什么,和false and后还是false,所以,你的逻辑有错误,这个B没有用处,就给你优化掉了
 
楼主的意思可能应该是or Result,而不是and。修改一下看看能不能获得预期的效果。
 
sa中有内容吗?Length(sa)是多少?
 
同意happycyp
 
接受答案了.
 
后退
顶部