Главная страница
    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.008 c
4-96475
Slash
2003-07-28 14:18
2003.09.29
Определение владельца ресурса


1-96247
Starkom
2003-09-17 15:01
2003.09.29
Вопрос об удивительном глюке пропертей компонентов VCL


1-96281
solo
2003-09-16 23:15
2003.09.29
Непонятные ошибки.


7-96455
alphaparticle1
2003-07-17 22:28
2003.09.29
неполучается считать с COM порта


8-96303
Илья
2003-06-02 14:35
2003.09.29
плагин к WinA,mp





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