6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
Memo2.Lines.AddStrings(strList);
strList.Free;
end;
В Memo1 введите несколько строк латиницей. При нажатии кнопки "Сортиро-
вать" в Memo2 выведутся строки, отсортированные в алфавитном порядке.
Однако этот код не работает для строк, содержащих кириллицу. Происхо-
дит это, опять же, из-за кодировки UTF-8. По умолчанию TStringList ис-
пользует следующую функцию, которая работает с ANSI строками:
function TStringList.DoCompareText(const s1,s2 : string)
: PtrInt;
begin
if FCaseSensitive then
result:= AnsiCompareStr(s1,s2)
else
result:= AnsiCompareText(s1,s2);
end;
К счастью, среди методов класса TStringList имеется метод
CustomSort. Его объявление в классе имеет вид:
type
TStringListSortCompare = function(List: TStringList; Indexl, Index2: integer): integer;
procedure CustomSort(CompareFn: TStringListSortCompare);
Можно воспользоваться методом CustomSort передав ему в качестве па-
раметра свою функцию сравнения. Чтобы отсортировать список, построим функцию сравнения двух элементов S1 и S2 с индексами indexl и index2