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