今天使用Loacte定位一个浮点类型的时候发现大于0小于1的浮点数会出现异常DataSet.Locate('F_Je',0.7,[loCaseInsensitive]);异常为:‘filter expression character:'.' ……’我调试到DBClient单元是发现了这段代码 case TField(Fields[i]).DataType of
        ftString, ftFixedChar, ftWideString, ftGUID:
          if (i = Fields.Count - 1) and (loPartialKey in Options) then
            ValStr := Format('''%s*''',[VarToStr(Value)]) else
            ValStr := Format('''%s''',[VarToStr(Value)]);
        ftDate, ftTime, ftDateTime, ftTimeStamp:
          ValStr := Format('''%s''',[VarToStr(Value)]);
        ftSmallint, ftInteger, ftWord, ftAutoInc, ftBoolean, ftFloat, ftCurrency, ftBCD, ftLargeInt, ftFMTBcd:
          ValStr := VarToStr(Value);
      else
        DatabaseErrorFmt(SBadFieldType, [TField(Fields[i]).FieldName]);
      end;
经过ValStr := VarToStr(Value);转换后 ValStr变成了 .7 把 0给去掉了所以就出现了上面的异常
请问大家怎样在不改变系统源码的情况下让Locate正常使用呢?
我做的是一个模块,不能修改字段类型,不能修改系统源码 我使用的是Delphi 6