Ver Fonte

[Linq] fixed issue filter returns more items than expected

Exilon há 3 anos atrás
pai
commit
dafe19b2c8
1 ficheiros alterados com 25 adições e 0 exclusões
  1. 25 0
      Quick.Linq.pas

+ 25 - 0
Quick.Linq.pas

@@ -371,6 +371,11 @@ begin
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   for obj in fList do
   for obj in fList do
   begin
   begin
+    {$IFNDEF FPC}
+    if obj = nil then continue;
+    {$ELSE}
+    if Pointer(obj) = nil then continue;
+    {$ENDIF}
     if fWhereClause.Validate(obj) then
     if fWhereClause.Validate(obj) then
     begin
     begin
       //value := TRTTI.GetProperty(obj,aPropertyName);
       //value := TRTTI.GetProperty(obj,aPropertyName);
@@ -396,6 +401,11 @@ begin
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   for obj in fList do
   for obj in fList do
   begin
   begin
+    {$IFNDEF FPC}
+    if obj = nil then continue;
+    {$ELSE}
+    if Pointer(obj) = nil then continue;
+    {$ENDIF}
     if fWhereClause.Validate(obj) then Result.Add(obj);
     if fWhereClause.Validate(obj) then Result.Add(obj);
   end;
   end;
   DoOrderBy(Result);
   DoOrderBy(Result);
@@ -412,6 +422,11 @@ begin
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   for obj in fList do
   for obj in fList do
   begin
   begin
+    {$IFNDEF FPC}
+    if obj = nil then continue;
+    {$ELSE}
+    if Pointer(obj) = nil then continue;
+    {$ENDIF}
     if fWhereClause.Validate(obj) then Exit(obj);
     if fWhereClause.Validate(obj) then Exit(obj);
   end;
   end;
 end;
 end;
@@ -427,6 +442,11 @@ begin
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   if fWhereClause = nil then raise ELinqNotValidExpression.Create('Not valid expression defined!');
   for obj in fList do
   for obj in fList do
   begin
   begin
+    {$IFNDEF FPC}
+    if obj = nil then continue;
+    {$ELSE}
+    if Pointer(obj) = nil then continue;
+    {$ENDIF}
     if fWhereClause.Validate(obj) then Result := obj;
     if fWhereClause.Validate(obj) then Result := obj;
   end;
   end;
 end;
 end;
@@ -446,6 +466,11 @@ begin
   i := 0;
   i := 0;
   for obj in fList do
   for obj in fList do
   begin
   begin
+    {$IFNDEF FPC}
+    if obj = nil then continue;
+    {$ELSE}
+    if Pointer(obj) = nil then continue;
+    {$ENDIF}
     if fWhereClause.Validate(obj) then
     if fWhereClause.Validate(obj) then
     begin
     begin
       Result.Add(obj);
       Result.Add(obj);