Ah, Ok thanks! > On Oct 20, 2024, at 3:32 PM, Martin Frb via fpc-pascal > <fpc-pascal@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@lists.freepascal.org > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal