[fpc-pascal] question on docs

ppadilcdx at gmail.com ppadilcdx at gmail.com
Mon Oct 21 00:50:15 CEST 2024


Ah, Ok thanks!

> On Oct 20, 2024, at 3:32 PM, Martin Frb via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
> 
> The compare function is declared right inside the class
> 
>   { TFPGList }
> 
>   generic TFPGList<T> = class(TFPSList)
>   private
>     type
>       TCompareFunc = function(const Item1, Item2: T): Integer;
> 
> 
> "T" is from the generic, so if you specialized with string, then T is string.
> 
> It is a function, not a method (i.e. not part of a class)
> 
> 
> On 21/10/2024 00:17, ppadilcdx--- via fpc-pascal wrote:
>> Just tried to compile a short program with that definition of compare: TCompareFunc, and that is the wrong type for TFPGList<String> in my program (yes there is a better class for strings but I just wanted a quick example program to compile). FPC error message says it wants:
>> function(const ShortString;const ShortString):LongInt,
>> so only two non-pointer input parameters. Must be another definition somewhere.
>>> type TFPSListCompareFunc = function(
>>> Key1: Pointer;
>>> Key2: Pointer
>>> ):Integer of object;
>>> 
>>> Two questions.
>>> 1) Should TCompareFunc in TFPGList.Sort be one of the above types, or is there another definition somewhere?
>>> 2) What is an “Integer of object” in TFPSListCompareFunc? (I expect it to be a typo but then I’m fairly new to free pascal so I might have missed the memo.)
>>> 
>>> 
>>> 
> 
> Of object belongs to the function (the entire function declaration before), not just the "integer".
> So that function must be a method of a class.
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



More information about the fpc-pascal mailing list