[fpc-pascal] Does MACRO work in this case?

silvioprog silvioprog at gmail.com
Mon Sep 19 04:35:58 CEST 2016


On Thu, Sep 8, 2016 at 6:27 PM, David Emerson <dle3ab at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20160918/280995d1/attachment.html>


More information about the fpc-pascal mailing list