Главная страница
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
15-1222540548
Копир
2008-09-27 22:35
2008.12.07
Вполне искусственный интеллект


2-1224877637
worldmen
2008-10-24 23:47
2008.12.07
Не видит PlaySound


2-1224855789
worldmen
2008-10-24 17:43
2008.12.07
Неполучается обрабоать кнопку TUpDown


15-1223305384
Slider007
2008-10-06 19:03
2008.12.07
С днем рождения ! 4 сентября 2008 суббота


2-1225142982
MsGuns
2008-10-28 00:29
2008.12.07
"Цветные" проблемы