Главная страница
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.012 c
2-1225037381
redlord
2008-10-26 19:09
2008.12.07
потоко независимые классы


2-1224701211
cruiser
2008-10-22 22:46
2008.12.07
Запуск приложения и ождание завершения, при этом форма активна


1-1202831739
somebody_
2008-02-12 18:55
2008.12.07
Статическая компоновка кода Делфи и С++


1-1202752824
Igit
2008-02-11 21:00
2008.12.07
Автоматическое скроллирование к ItemIndex в ListView


15-1223204969
Дмитрий С
2008-10-05 15:09
2008.12.07
GPS в самолете