Вчера столкнулся, с данной проблемой. Но конкретно в TMemTableEh. Так как никогда не пользовался этими компонентами долго не мог понять почему не работает Lookup и т.д., пока не пошел дебаггером. Как выяснилось с поиском русских букв проблемы. В нете ничего по решению данной проблемы не нашел. И не придумал ничего умного, как в код MemTableEh внести изменения. Изменения выделены красным.(поля типа ftWideString у меня)
Код:
function CompareField(Field: TField; Value: Variant): Boolean;
var
S: string;
begin
if (Field.DataType = ftString) or (Field.DataType = ftWideString) then
begin
S := Field.AsString;
if (loPartialKey in Options) then
{$IFDEF CIL}
Borland.Delphi.System.Delete(S, Length(Value) + 1, MaxInt);
{$ELSE}
System.Delete(S, Length(Value) + 1, MaxInt);
{$ENDIF}
if (loCaseInsensitive in Options) then
Result := AnsiCompareText(S, Value) = 0
else
Result := AnsiCompareStr(S, Value) = 0;
end
else
Result := VarEquals(Field.Value, Value);
end;
Прокомментируйте пожалуйста кто сталкивался или может есть предложения по решению данной проблемы?