Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

Списки. Сортировка.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
15-1223223967
Anton
2008-10-05 20:26
2008.12.07
Вопрос по структуре будущего проекта


15-1221852310
DevilDevil
2008-09-19 23:25
2008.12.07
один svchost.exe жрёт процессор. Что делать ?


15-1223180939
TUses
2008-10-05 08:28
2008.12.07
Москвичи, подскажите хорошие магазины с компьютерными запчастями?


15-1223037338
БарЛог
2008-10-03 16:35
2008.12.07
USB-автомагнитола


15-1223143297
Cyrax
2008-10-04 22:01
2008.12.07
Устанавливают ли срок службы на сотовые телефоны ?