Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.004 c
2-1225036430
AWiiS
2008-10-26 18:53
2008.12.07
Delphi и Access - заставить жить дружно


3-1211208539
aleksej
2008-05-19 18:48
2008.12.07
колесо мыши и dbgrid


15-1222915880
Slider007
2008-10-02 06:51
2008.12.07
С днем рождения ! 2 октября 2008 четверг


2-1225186805
dmitry_12_08_73
2008-10-28 12:40
2008.12.07
Скрытие пиктограммы программы в таскбаре


8-1188236379
Dmitry_12_08_73
2007-08-27 21:39
2008.12.07
Считать время с FTP-сервера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский