Модератор: Модераторы
function CompareFields(Data1, Data2: Pointer; FieldType: TFieldType;
CaseInsensitive: Boolean): Integer;
begin
Result := 0;
case FieldType of
ftString:
if CaseInsensitive then
Result := AnsiCompareText(PChar(Data1), PChar(Data2))
else
Result := AnsiCompareStr(PChar(Data1), PChar(Data2));
Inferno писал(а):я к чему это всё.... дело не в гриде ... может быть в rxMemoryData....нужно копать:
rxmemds.pas
- Код: Выделить всё
function CompareFields(Data1, Data2: Pointer; FieldType: TFieldType;
CaseInsensitive: Boolean): Integer;
begin
Result := 0;
case FieldType of
ftString:
if CaseInsensitive then
Result := AnsiCompareText(PChar(Data1), PChar(Data2))
else
Result := AnsiCompareStr(PChar(Data1), PChar(Data2));
и дальше
function AnsiCompareText(const S1, S2: string): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
function AnsiCompareStr(const S1, S2: string): integer;{$ifdef SYSUTILSINLINE}inline;{$endif}
может быть в компоненте
AnsiCompareText, AnsiCompareStr заменить на CompareText,CompareStr. сам не пробовал
ммм....
У меня вообще этот пример не работает. падает в AV на строке PBoolean(Pointer(Data))^:= Assigned(Buffer); в RxMemoryData.SetFieldData(Field: TField; Buffer: Pointer);
Есть подозрения из-за того что криво писано для 64бит. у меня как раз 64 битный linux
result := WideCompareText(UTF8Decode(PChar(Data1)), UTF8Decode(PChar(Data1)));
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46