Форум: "Основная";
Текущий архив: 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