浏览代码

[expressions] fixed fpc compatibility

Exilon 5 年之前
父节点
当前提交
8595cfddee
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      Quick.Expression.pas

+ 12 - 1
Quick.Expression.pas

@@ -61,8 +61,10 @@ type
     fValue1 : string;
     fOperator : TOperator;
     fValue2 : string;
+    {$IFNDEF FPC}
     function ListContains(aArrayObj : TObject; const aValue : string): Boolean;
     function IListContains(aArrayObj : TValue; const aValue : string): Boolean;
+    {$ENDIF}
     function ArrayContains(aArray : TValue; const aValue : string): Boolean;
   public
     property Value1 : string read fValue1 write fValue1;
@@ -274,14 +276,19 @@ begin
     TOperator.opLikeL : Result := StartsText(fValue2,value1);
     TOperator.opContains :
       begin
+        {$IFNDEF FPC}
         if value1.IsObject then Result := ListContains(value1.AsObject,fValue2)
         else if value1.IsInterface then Result := IListContains(value1.AsTValue,fValue2)
           else if value1.IsArray then Result := ArrayContains(value1.AsTValue,fValue2);
+        {$ELSE}
+        if value1.IsArray then Result := ArrayContains(value1.AsTValue,fValue2);
+        {$ENDIF}
       end
     else raise ENotValidExpression.Create('Operator not defined');
   end;
 end;
 
+{$IFNDEF FPC}
 function TSingleExpression.ListContains(aArrayObj : TObject; const aValue : string): Boolean;
 var
   ctx : TRttiContext;
@@ -321,6 +328,7 @@ begin
     raise EExpressionValidateError.Create('Interface property not supported');
   end;
 end;
+{$ENDIF}
 
 function TSingleExpression.ArrayContains(aArray : TValue; const aValue : string): Boolean;
 var
@@ -335,7 +343,10 @@ begin
     Dec(count);
     arrItem := aArray.GetArrayElement(count);
     case arrItem.Kind of
-      tkString, tkUnicodeString, tkWideString : Result := CompareText(arrItem.AsString,aValue) = 0;
+      {$IFNDEF FPC}
+      tkString,
+      {$ENDIF}
+      tkUnicodeString, tkWideString : Result := CompareText(arrItem.AsString,aValue) = 0;
       tkInteger, tkInt64 : Result := arrItem.AsInt64 = aValue.ToInt64;
       tkFloat : Result := arrItem.AsExtended = aValue.ToExtended;
       else raise EExpressionNotSupported.CreateFmt('Type Array<%s> not supported',[arrItem.TypeInfo.Name]);