Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Умный поиск папок

02.11.2015, 14:13. Показов 1588. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня. Прошу помощи, совета
Задача такова
Нужно создать умный поиск папок
К примеру имею такие пути ( зная что D:\Music\ - это постоянная папка )
и знаю что в ней находится до 10 папок а внутри их много директорий
D:\Music\Hip-Hop\ и много директорий
D:\Music\Pop\ и много директорий
D:\Music\Rock\ и много директорий

вот и нужно там где много директорий получить список первых директорий по формуле ( последняя папка -( минус) 30 предыдущих директорий ) и что останется вывести в список
к примеру в папке D:\Music\Hip-Hop\1\ - D:\Music\Hip-Hop\45\ 45 папок , надо то бы в список попало бы D:\Music\Hip-Hop\1 - 15

Как бы все просто - но как ограничить рекурсию по моему условию ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.11.2015, 14:13
Ответы с готовыми решениями:

Поиск по папок по маске и перемещение найденных папок в другие папки
Добрый день, у меня возникла проблема, прошу помочь в написании батника. Есть основная папка в которой будет находиться .bat файл. В...

Умный поиск по БД
Доброго времени суток. Как реализовать умный поиск по бд mysql, в следуюшем виде. К примеру в базе есть названия песен и их...

Умный поиск по сайту
Здравствуйте, у меня такая проблема: сайт работает с большим количеством книг, и мне нужно сделать поиск, который будет искать нужные...

5
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,911
Записей в блоге: 12
02.11.2015, 14:46
Лучший ответ Сообщение было отмечено Ddv122 как решение

Решение

Ddv122, найди все папки (причем безо всякой рекурсии), и выбери только нужные:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <System.IOUtils.hpp>
bool f(String const & a, String const & b)
{
    return StrToInt(ExtractFileName(a)) - StrToInt(ExtractFileName(b)) < 0;
}
 
void __fastcall TForm1::Button31Click(TObject *Sender)
{
    TStringDynArray list = TDirectory::GetDirectories(L"D:\\test\\Music\\Hip-Hop");
    std::sort(&list[0], &list[list.Length - 1] + 1, f); // иначе будет \1, \10, \11, ... и только потом \2, \3
 
    for (int i = 0; i < list.Length - 30; i++)
    {
        // Делай что хочешь с папками
        Memo1->Lines->Add(list[i]);
    }
}
(XE+)
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
22.12.2015, 23:15  [ТС]
volvo, Спасибо огромное
А есть ли возможность отсортировать лист
иначе будет \1, \10, \11, ... и только потом \2, \3
в младших версиях ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,911
Записей в блоге: 12
23.12.2015, 00:28
std::sort доступен везде, если я не ошибаюсь, с самого 6-го Билдера, так что тут о старших/младших версиях нет разговора. Заполняешь список строк названиями папок любым доступным в твоей версии Билдера способом, и потом сортируешь их стандартным (или любым другим, по желанию) алгоритмом.
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
24.12.2015, 02:35  [ТС]
volvo, volvo,
да спасибо есть .
C++
1
2
3
#include <algorithm>    // std::set_union, std::sort, etc
#include <vector>       // std::vector
#include <math.h>
Но можно ли таким способом сравнить даты?
то 01-01-2016 получается меньше чем 12-30-2015

Добавлено через 1 час 51 минуту
Решение

C++
1
2
3
4
5
6
7
8
9
10
11
int __fastcall MySortCompare(TStringList* List, int Index1, int Index2)
{
 
      int Day, Month, Year;
    TDate first, second;
    sscanf(List->Strings[Index1].c_str(), "%d-%d-%d", &Month, &Day, &Year);
    first = EncodeDate(Year, Month, Day);
    sscanf(List->Strings[Index2].c_str(), "%d-%d-%d", &Month, &Day, &Year);
    second = EncodeDate(Year, Month, Day);
    return CompareDate(first, second); 
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,911
Записей в блоге: 12
24.12.2015, 10:24
Цитата Сообщение от Ddv122 Посмотреть сообщение
Решение
Ну, или так:
C++
1
2
3
4
int __fastcall MySortCompare(TStringList* List, int Index1, int Index2)
{
    return CompareDate(StrToDate(List->Strings[Index1]), StrToDate(List->Strings[Index2]));
}
C++
1
2
3
4
5
6
7
8
9
10
// но тогда вызывать нужно чуть-чуть по-другому:
    char ds = DateSeparator; // запоминаем текущий разделитель дат и подменяем на нужный
    DateSeparator = '-';
    String sdf = ShortDateFormat; // то же самое с текущим форматом ShortDate
    ShortDateFormat = "mm-dd-yyyy";
 
    L->CustomSort(MySortCompare); // собственно. сортировка
 
    DateSeparator = ds; // восстанавливаем прежние значения
    ShortDateFormat = sdf;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2015, 10:24
Помогаю со студенческими работами здесь

умный поиск текста
есть файл, в нем текст вида &lt;br/&gt;Деньги: 50000&lt;br/&gt; как реализовать поиск иммено Деньги: 50000 вот этой части при условии что...

Умный поиск по нескольким таблицам Access
Уважаемые знатоки, помоги пожалуйста решить следующую задачу: Есть база данных в Access и Excel, который используется для ввода/вывода...

Стандартный и умный поиск не ищет по псевнонимам авторов и дате
Добрый день! Столкнулся с такой проблемой: блог категории содержит стандартные записи, наиболее важной частью которых является дата их...

Ошибка при индексации в "Умный поиск"
Друзья, подскажите как решить проблему, при индексации выдает такую ошибку, я так понял, что таблица y9hmp_finder_tokens заполнена, записей...

Поиск скрытых папок
Все привет!! Задача такая надо найти все скрытые папки ищу так новсе равно выдает только видемые папки. а мне нужны скрытые!! ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru