Помощь - Поиск - Пользователи - Календарь
Полная версия: сортировка TList
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
kosyak
Доброе время суток.
Не могу понять как пользоватся методом Sort объекта TList. Делаю как в хелпе:


function CompareDouble(Item1, Item2: PDouble): Integer;
//Функция сравнения
begin
result := CompareValue(item1^,item2^);
end;

....
list.Sort(@CompareDouble); //Сортируем полученный список
....



Почему то не хочет сортировать?

И еще один (наверно глупый) вопрос. Вот когда добавляю элементы Pointer методом add в Tlist. А когда делаю list.free память очищается?? не надо dispose для элементов делать?
volvo
Цитата
Почему то не хочет сортировать?
Чего это не хочет? Все сортируется:
Нажмите для просмотра прикрепленного файла

Ты как заполняешь list?
kosyak
 Function GetListFromFile(var list: TList; var F: TextFile):boolean;
var s: String;
temp: PCurrency;
i: integer;
begin
result := true;
if list <> nil then
begin
while not EOF(F) do
begin
Readln(F,s);
new(temp);
try
temp^ := StrToCurr(s);
list.Add(temp);
except
Write('Wrong file format');
result := false;
exit;
end;
end;
end;
end;
volvo
Тебе на самом деле кажется, что PCurrency и PDouble - одно и то же? blink.gif Ты ошибаешься. Поменяй в Compare тип параметров и будет сортировать.
kosyak
smile.gif Спасибо, volvo, большое... я уж всю голову сломал... не заметил=))

А на счет глупого вопроса???
volvo
Нет, нельзя не удалять данные... По крайней мере Борланд в Хелпе настоятельно рекомендует пройти циклом по всем элементам и применить к каждому Dispose, а только потом Free всего списка.

Другое дело, если ты работаешь в D2009+ с TList<Currency>. Вот такой список работает с самими данными, а не с указателями на них, здесь достаточно вызвать метод Free, ничего больше делать не надо.
kosyak
Спасибо!! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.