[fpc-pascal] Sorting a Stringlist on ValueFromIndex
Michael Van Canneyt
michael at freepascal.org
Tue Feb 15 16:01:49 CET 2022
On Tue, 15 Feb 2022, James Richters wrote:
> Thanks for the elegant solution Michael, but I'm having some issues implementing it.
>
> I'm getting:
>
> pastep.pas(28651,10) Warning: Function result does not seem to be set
>
> 28650 // Custom compare function
> 28651 function CompareValues(List: TStringList; Index1, Index2: Integer): Integer;
> 28652
> 28653 begin
> 28654 Result:=CompareText(List.ValueFromIndex[Index1],List.ValueFromIndex[Index2])
> 28655 end;
>
> pastep.pas(28797,65) Error: Incompatible type for arg no. 1: Got "Pointer", expected "<procedure variable type of function(TStringList;LongInt;LongInt):LongInt;Register>"
>
> 28797 AllLogLastRunStringList.CustomSort(@CompareValues);
>
> The unit I'm putting this in has:
> Unit PAStep;
> {$Mode TP}{$I-}
Ehmmm..
TStringList is not supposed to be used in mode TP, and Result likewise should not be
available IIRC...
> {$modeswitch exceptions}
> {$R+}
>
> I can fix the first error with:
> 28654 CompareValues:=CompareText(List.ValueFromIndex[Index1],List.ValueFromIndex[Index2])
> {$Mode TP} doesn't like using 'result'
>
> But I have no idea how I could fix the second error. Any ideas?
Try to remove the @
Michael.
More information about the fpc-pascal
mailing list