Say I have an array of records which I want to sort based on one of the fields in the record. What's the best way to achieve this?
TExample = record
SortOrder : integer;
SomethingElse : string;
end;
var SomeVar : array of TExample;
arraysdelphisorting
Say I have an array of records which I want to sort based on one of the fields in the record. What's the best way to achieve this?
TExample = record
SortOrder : integer;
SomethingElse : string;
end;
var SomeVar : array of TExample;
Best Solution
You can add pointers to the elements of the array to a
TList
, then callTList.Sort
with a comparison function, and finally create a new array and copy the values out of the TList in the desired order.However, if you're using the next version, D2009, there is a new collections library which can sort arrays. It takes an optional
IComparer<TExample>
implementation for custom sorting orders. Here it is in action for your specific case: