Я думаю, что самый простой способ будет что-то вдоль этих линий:
- Передача содержимого из записки к
TStringList
инстанции.
- Позвоните по номеру
CustomSort
на номер TStringList
, пройдя соответствующую функцию сравнения сортировки.
- Перенос содержимого обратно в памятку.
Этапы 1 и 3 являются простыми вызовами для Assign
. Так шаг 1 будет:
StringList.Assign(Memo.Lines);
И шаг 3 будет:
Memo.Lines.Assign(StringList);
Шаг 2 является сложным немного. Вы должны предоставить функцию сравнения этого типа:
TStringListSortCompare = function(List: TStringList;
Index1, Index2: Integer): Integer;
Ваша функция будет выглядеть следующим образом:
function MySortCompare(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := MyCompareStrings(List[Index1], List[Index2]);
end;
где MyCompareStrings
это функция, которая сравнивает две строки в соответствии с вашими правилами. Возвращаемое значение этой функции следует обычному соглашению для функции сравнения. Отрицательный означает меньше, чем положительное значение больше и равно нулю.
Конечно, вы можете написать логику непосредственно в строке MySortCompare
, если хотите.
Я думаю, вы должны посмотреть на создание объекта данных и сортировку объектов данных. Затем вы должны напечатать объекты данных (которые уже отсортированы) в списке String. Вы попадаете в «строго типизированную» плохую практику использования только встроенных типов данных (особенно строк), где вам следует подумать о создании собственных записей или классов. –