On Thu, Sep 8, 2016 at 6:27 PM, David Emerson <dle...@angelbase.com> wrote:

> On 09/08/2016 10:08 AM, silvioprog wrote:
>
>> 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":
>>
>
> Macros can only replace identifiers, the dot breaks it.
>
> I would make something like,
>
> _TIStringComparer_dot_Ordinal
>
> and then you can use the definition you proposed.
>
> I'm in the habit of naming macros with a leading underscore, as I don't
> name anything else that way and it makes it easy to identify them.


Thanks for sharing this info regarding macros. :-)

I've declared a macro trying to keep the Delphi syntax, so unfortunately I
can't declare it as _TIStringComparer_dot_Ordinal instead of
TIStringComparer.Ordinal, hence I've temporally declared it as:

class constructor TFoo.Bar;
begin
...
  GVariables := TDictionary<string, string>.Create(
{$IFDEF FPC}
    // see http://lists.freepascal.org/pipermail/fpc-pascal/2016-
August/048635.html
    TEqualityComparer<string>.Construct(EqualityComparison, ExtendedHasher)
{$ELSE}
    TIStringComparer.Ordinal
{$ENDIF});
end;

but I will remove the implementation above as soon as rtl-generics allow to
use TIStringComparer.Ordinal without workarounds.

--
Silvio Clécio
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to