* Fixed case-insensitive filtering on filters like *blah*

git-svn-id: trunk@21252 -
This commit is contained in:
joost 2012-05-08 09:33:21 +00:00
parent 5b1b194b47
commit a5bfcb026d
2 changed files with 49 additions and 4 deletions

View File

@ -1679,7 +1679,7 @@ begin
str0 := AnsiStrUpper(Args[0]);
str1 := AnsiStrUpper(Args[1]+1);
setlength(str1, arg1len-2);
match := AnsiPos(str0, str1) = 0;
match := AnsiPos(str1, str0) <> 0;
end else begin
arg0len := StrLen(Args[0]);
// at least length without asterisk

View File

@ -1132,15 +1132,60 @@ begin
with DBConnector.GetNDataset(15) do
begin
Open;
//FilterOptions := [foNoPartialCompare];
//FilterOptions := [];
Filter := '(name=''*Name3'')';
Filter := '(name=''TestName3'')';
Filtered := True;
CheckFalse(EOF);
CheckEquals(3,FieldByName('ID').asinteger);
CheckEquals('TestName3',FieldByName('NAME').asstring);
next;
CheckTrue(EOF);
// Check partial compare
Filter := '(name=''*Name5'')';
CheckFalse(EOF);
CheckEquals(5,FieldByName('ID').asinteger);
CheckEquals('TestName5',FieldByName('NAME').asstring);
next;
CheckTrue(EOF);
// Check case-sensitivity
Filter := '(name=''*name3'')';
first;
CheckTrue(EOF);
FilterOptions:=[foCaseInsensitive];
Filter := '(name=''testname3'')';
first;
CheckFalse(EOF);
CheckEquals(3,FieldByName('ID').asinteger);
CheckEquals('TestName3',FieldByName('NAME').asstring);
next;
CheckTrue(EOF);
// Check case-insensitive partial compare
Filter := '(name=''*name3'')';
first;
CheckFalse(EOF);
CheckEquals(3,FieldByName('ID').asinteger);
CheckEquals('TestName3',FieldByName('NAME').asstring);
next;
CheckTrue(EOF);
Filter := '(name=''*name*'')';
first;
CheckFalse(EOF);
CheckEquals(1,FieldByName('ID').asinteger);
CheckEquals('TestName1',FieldByName('NAME').asstring);
next;
CheckFalse(EOF);
CheckEquals(2,FieldByName('ID').asinteger);
CheckEquals('TestName2',FieldByName('NAME').asstring);
Filter := '(name=''*neme*'')';
first;
CheckTrue(EOF);
Close;
end;
end;