С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 25.03.2014
Сообщений: 29

Сортировка Времени/Дат StringList CustomSort

10.04.2014, 22:16. Показов 2660. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сортировать небольшие списки по времени ("00:00:00").
Поле данных в объекте элемента списка. По логике так должно работать, но не работает, элементы перемещаются но это не сортировка ни по времени ни по тексту, бессмысленное упорядочивание. Причём ф-я возвращает правильный результат.

C++
1
2
3
4
5
6
7
8
9
10
int __fastcall CompareDateAsc(TStringList *List, int Index1, int Index2)
 {
  AnsiString S1  = ((BSTerItem*)List->Objects[Index1])->MealTime;   //S1 = "08:00" 
  AnsiString S2  = ((BSTerItem*)List->Objects[Index2])->MealTime;   //S2 = "06:00" 
 
  TTime T1  = StrToTime(S1); //T1 = 30.12.1899 8:00:00
  TTime T2  = StrToTime(S2); //T1 = 30.12.1899 6:00:00
 
  return T1 < T2; //false
 }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2014, 22:16
Ответы с готовыми решениями:

Сортировка дат
Задание ввести пят дат через MaskEdit, после чего отсортировать в порядке возрастания в ListBox или Memo. Маска в MaskEdit...

Настройка времени и сортировка по времени
Создал БД в Access в колонке &quot;дата/время&quot; настроил всё, чтобы показывалось только время, но при работе в самой программе(C++ Builder )...

Сортировка дат в массиве. Определение времени года по дате
В новой книге заполнить столбец А на 10 строк случайными датами. Создать массив типа Date (дата). Считать в массив все даты из столбца А....

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
10.04.2014, 22:30
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Для сравнения двух переменных типа TTime (TDateTime) используй CompareTime:
C++
1
2
3
4
5
6
7
8
9
10
int __fastcall CompareDateAsc(TStringList *List, int Index1, int Index2)
 {
  AnsiString S1  = ((BSTerItem*)List->Objects[Index1])->MealTime;   //S1 = "08:00" 
  AnsiString S2  = ((BSTerItem*)List->Objects[Index2])->MealTime;   //S2 = "06:00" 
 
  TTime T1  = StrToTime(S1); //T1 = 30.12.1899 8:00:00
  TTime T2  = StrToTime(S2); //T1 = 30.12.1899 6:00:00
 
  return CompareTime(T1, T2);
 }
1
1 / 1 / 0
Регистрация: 25.03.2014
Сообщений: 29
11.04.2014, 00:10  [ТС]
Спасибо. К сожалению причина не в этом, где то я ошибся видимо. Пока отложу этот вопрос.
0
1 / 1 / 0
Регистрация: 25.03.2014
Сообщений: 29
11.05.2014, 16:22  [ТС]
Вернулся к вопросу.

Спасибо, UI, правильно работает с CompareTime(). Это всё я, после заказной сортировки вызывал ещё и стандартную.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2014, 16:22
Помогаю со студенческими работами здесь

Сортировка StringList по убыванию
Дан список строк в TStringList вида: Нужно привести этот список к такому виду (отсортировать по убыванию): Понятия...

Программирование дат и времени
Программа перечисляет нечетные даты по дням недели в месяце для заданного года по передаче 1 аргументом года, 2 - дня недели. Система...

Локализация дат и времени
Привет . Как я понял форматирование дат и времени завязано на функции strftime http://php.net/manual/ru/function.strftime.php ...

вычитание дат/времени
Всем привет! Возникла необходимость вычислять одну дату из другой (переменные типа NotesDateTime), но вот оказалось что не все так...

Подсчет дат и пересекающие промежутки времени
Всем привет! Помогите решить задачку, принимаются в том числе подсказки! Есть файл excel, содержить следующие данные Время...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru