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

Вниз

Помогите рассортировать пер. 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-96414
SergeySEM
2003-09-10 11:19
2003.09.29
что есть Hook


1-96239
Шишкин Илья
2003-09-17 15:39
2003.09.29
Помогите написать функцию


1-96260
griff
2003-09-12 14:10
2003.09.29
i/o error 21


6-96314
AHTOH
2003-07-30 00:26
2003.09.29
Как узнать, что порт, занятый моей прогой, нужен какой-то другой


9-96048
Juster~
2003-03-22 21:11
2003.09.29
Программист или любитель?