Hello,
Looking an alternative to solve the problem I've talked at this topic <http://lists.freepascal.org/pipermail/fpc-pascal/2016-August/048635.html>, I've tried to solve it declaring a macro named "TIStringComparer.Ordinal":
=== begin code ===
{$IFDEF FPC}
function EqualityComparison(constref ALeft, ARight: string): Boolean;
begin
Result := CompareText(ALeft, ARight) = 0;
end;
function ExtendedHasher(constref AValue: string): UInt32;
var
S: string;
begin
S := LowerCase(AValue);
Result := TDefaultHashFactory.GetHashCode(Pointer(S), Length(S) *
SizeOf(Char), 0);
end;
// see http://lists.freepascal.org/pipermail/fpc-pascal/2016-August
/048635.html
{$MACRO ON}
{$DEFINE TIStringComparer.Ordinal :=
TEqualityComparer<string>.Construct(EqualityComparison,
ExtendedHasher) }
{$ENDIF}=== end code ===
The macro is just for retro-compatibility with Delphi, allowing to use this syntax:
GVariables := TDictionary<string, string>.Create(TIStringComparer.Ordinal);
// the macro should replace it, but ...However, it seems the macro can't replace the original "TIStringComparer.Ordinal" to my
"TEqualityComparer<string>.Construct(EqualityComparison, ExtendedHasher)" definition.
So, is macro indicated to solve this kind of problem?
