Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизСписки. Сортировка. Найти похожие ветки
← →
Vitaliy_____ (2008-10-27 09:38) [0]Здравствуйте.
Есть набор данных, представляющий 3 списка строк.
Один из этих списков содержит имена файлов, представляющих из себя следующее: МаскаГруппы_НомерИтерации.Расширение
Два других списка - прочитанные из этих файлом параметры.
Необходимо отсортировать эти списки по имени файла.
Проблема в том, что НомерИтерации - число, приписанное к имени, нужно отсортировать именно как число (т.е. не "10, 100, 110, 20, ..." а "10, 20, 30, ..., 100, ...").
Функцию извлечения номера из строки я написал так:
Const nullval=ord("0");
Const nineval=ord("9");
function GetLastNumberInFileName(const fn:string; var NumberStartPos:integer):integer;
var i,l:integer;
b:byte;
k:boolean;
begin
l:= length(fn);
i:=l; k:=false;
// 1. Поиск конца числа
while (k=false) and (i>0) do begin
b:=ord(fn[i]);
if (b>=nullval) and (b<=nineval) then
k:=true
else
dec(i);
end;
if i=0 then begin // Числа не найдено
result:=-1;
exit;
end;
NumberStartPos:=i-1; k:=false;
// 2. Поиск начала числа
while (k=false) and (NumberStartPos>0) do begin
b:=ord(fn[NumberStartPos]);
if (b<nullval) or (b>nineval) then
k:=true
else
dec(NumberStartPos);
end;
result:=strtoint(copy(fn,NumberStartPos+1,i-NumberStartPos));
end;
ВОПРОС
Как теперь организовать структуры для сортировки этих данных. Критерий сравнения есть (сравнение "маски" как строки, при равенстве - сравнение числа, возвращаемого ф-ей). Если можно, то с кодом.
← →
brother © (2008-10-27 09:40) [1]> (т.е. не "10, 100, 110, 20, ..." а "10, 20, 30, ..., 100,
> ...").
тебе нужна сортировка по возрастанию?
← →
Vitaliy_____ (2008-10-27 11:52) [2]Да. Мне особо интересует структура как хранить описанное выше. На си бы написал... Можно конечно с динамическими массивами, но мне кажется тут больше подойдут списки. Возможно как-то TList прицепить...
← →
brother © (2008-10-27 11:54) [3]> Возможно как-то TList прицепить...
нужно, тогда сортировка вообще проста)
← →
Vitaliy_____ (2008-10-27 12:28) [4]Вот я и прошу синтаксис как это прицепить :)
← →
Сергей М. © (2008-10-27 13:31) [5]
> Vitaliy_____
Для хранения списка строк очевиднее и удобнее использование класса TStringList, который метод CustomSort
← →
Anatoly Podgoretsky © (2008-10-27 15:19) [6]> Vitaliy_____ (27.10.2008 12:28:04) [4]
Смотри в справке метод Sort
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c