[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]
{
Here is an example of a TStringCollection decendant that sorts the
strings by the 30th character and beyond. The default
TStringCollection sorts from the first character. }
uses Objects;
type
PMyCollection = ^TMyCollection;
TMyCollection = object(TStringCollection)
function Compare(Key1, Key2 : Pointer); virtual;
end;
function TMyCollection.Compare(Key1, Key2 : Pointer); virtual;
var s, t : string;
begin
{ This is where you would sort two strings Compare must
return -1 if Key1 < Key2, 0 if Key1 = Key2, and
1 if Key1 > Key2 }
s := Copy(Key1^, 30, Length(Key1^) - 30);
t := Copy(Key2^, 30, Length(Key2^) - 30);
if s < t then Compare := -1 else
if s = t then Compare := 0 else
Compare := 1;
end;
var P : PMyCollection;
begin
P := New(PMyCollection, Init(10, 10));
ReadLineFromFile;
Insert(NewStr(LineFromFile));
for x := 0 to P^.Count - 1 do
writeln(PString(P^.At(x))^);
Dispose(P, Done);
end;
[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]