Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

Помогите рассортировать пер. string типа   Найти похожие ветки 

 
Layner   (2003-09-16 10:15) [0]

по времени, т.е. сначала по году, потом по мес, потом по дням. (Это для сортировки файлов-архивов форума мастеров на диске)


 
Layner   (2003-09-16 10:17) [1]

Т.е. есть в мемо список имеющихся, как получить во второе мемо сортированные?


 
Kremen   (2003-09-16 10:19) [2]

где ты отображаешь эти файлы? в программе? или у тебя просто список?


 
Jeer   (2003-09-16 10:23) [3]

Переставь пары цифр в нужном порядке, дальше - стандартными средствами


 
ZEE   (2003-09-16 10:25) [4]

если у тебя список строк с датами - надо переводить string в TDateTime (например StrToDate, EncodeDate)
и сравнивать две даты как числа (тип Double)


 
FOX   (2003-09-16 12:05) [5]

Один из возможных вариантов:

Список ListBox1 содержит названия файлов.

function SortDate (List: TStringList; Index1, Index2: Integer): integer;
var Date1, Date2 : TDate;
begin
Date1 := strToDate(List[Index1]);
Date2 := strToDate(List[Index2]);
if Date1 < Date2 then result := -1
else if Date1 = Date2 then result := 0
else result := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var oldShortDateFormat: string;
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.Assign( ListBox1.Items);
oldShortDateFormat := ShortDateFormat;
ShortDateFormat := "dd/mm/yy";
sl.CustomSort( SortDate);
ShortDateFormat := oldShortDateFormat;
ListBox1.Items.Assign( sl);
finally
sl.free;
end;
end;


 
BanderLog   (2003-09-16 13:26) [6]

Если строки строго заданного формата, то их и переводить в число не надо, так сравнивай (If S1 > S2 Then ...), а дальше любым алгоритмом по сортировке. (правда в скорости не уверен)


 
ZEE   (2003-09-16 13:36) [7]

> BanderLog © (16.09.03 13:26) [6]
> Если строки строго заданного формата, то их и переводить
> в число не надо, так сравнивай ( If S1 > S2 Then ...), а
> дальше любым алгоритмом по сортировке. (правда в скорости
> не уверен)
сортировка не получится - см. сабж - сначла день, потом месяц, потом год - т.е. список типа
25.04.03
31.05.00
01.11.01
отсортируется так
01.11.01
25.04.03
31.05.00
а надо так
31.05.00
01.11.01
25.04.03


 
BanderLog   (2003-09-16 13:38) [8]

Мнда, пора завязывать с работой и идти отсыпаться. :(
Признабю свою вину.


 
panov   (2003-09-16 14:02) [9]

Воспользуйся TStringList.CustomSort


 
Jeer   (2003-09-16 15:15) [10]

function DateReverse(s: string): string;
begin
Result := s;
if Length(s) <> 8 then Exit;
Result[3]:=Result[1];Result[6]:=Result[2];Result[1]:=Result[7];
Result[2]:=Result[8];Result[7]:=Result[3];Result[8]:=Result[6];
Result[3]:=#46;Result[6]:=46;
end;

lst.Add(DateReverse(filedate));
lst.Sort;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.074 c
7-96455
alphaparticle1
2003-07-17 22:28
2003.09.29
неполучается считать с COM порта


8-96312
Hlam
2003-06-03 02:15
2003.09.29
Нужны средства работы с 3d файлами CAD/CAM систем


1-96272
alexandr1045
2003-09-16 22:40
2003.09.29
Связь кнопки с .exe файлом


3-96080
denis24
2003-09-10 17:05
2003.09.29
adoquery.sql


14-96355
yaJohn
2003-09-08 17:08
2003.09.29
Спасем Билла Г!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский