| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Определить размер группы файлов |
| Автор: denisminb 20.1.2013, 23:00 | ||
| Добрый вечер, помогите пожалуйста реализовать до конца задачу. осталось, определить: -средний размер для каждой группы файлов (группировать по расширению и отдельной строкой - для всех) - рекурсивно по всей папке. Вычисляю размер файлов,папок,количество- так:
До конца,так и не могу решить задачу |
| Автор: NoviceF 21.1.2013, 08:43 |
| |
| Автор: denisminb 21.1.2013, 09:28 | ||
да,esignal. с потоками средне дружу. Вы в контору прошли? |
| Автор: denisminb 21.1.2013, 10:55 |
| А без потоков как решить? Добавлено через 10 минут и 4 секунды volatile, А можете на не больщом примере показать,что имели ввиду? |
| Автор: NoviceF 21.1.2013, 12:08 |
Нет.. к сожалению или к счатью, пока не знаю Известными мне способами никак.. читайте в конце задания, что-то типа "интерфейс пользователя не должен замирать... бла бла бла", вот тут и нужна будет многопоточность. Я как смог сделал все пункты, кроме этого.. ну и ещё у меня русские пути в файловой системе не понимала программа, это, я считаю, была проблема Qt, с аглийскими путями всё прекрасно работало и даже гуи был, только в одном потоке с логикой. |
| Автор: NoviceF 21.1.2013, 12:30 | ||
не знаю насколько это показательно.. и сделать конечно можно намного красивее и правильнее, но тем не менее просто покажу что когда-то делал я Сначала проходим по всем путям нужной нам директории, и средствами Qt, а точнее вот такого класса QFileInfoList, пути сохраняем в QStringList datalist. Проходим по QStringList datalist, выбирая только расришения, сохраняем их в set<std::string>. Даём на вход функции map вида std::map<std::string, vector<std::string> > (тут у нас в итоге должны содержаться данные в виде: ключ - расширение файла, значения - пути к файлам) и set<std::string> содержащий расширения.
пысы, только не нужно пинать меня за стиль и приёмы, по сути был мой первый опыт что-то писать самостоятельно |
| Автор: volatile 21.1.2013, 13:04 | ||||||
создать ассоциативный контейнер, скажем
передать его по ссылке, в вашу функцию
в функции выделить расширение очередного файла в строковую переменную, скажем ext; т.е. для для "prog.exe", ext должно быть "exe" Ну и прибавлять размеры в группы:
после возврата, в массиве groups будут суммы размеров файлов, сгруппированных по расширению. ***еще, пожалуй, std::string и AnsiString смешивать в одной програаме не стоит. Так что вибирайте сами. если не секрет вы о какой конторе? Добавлено через 4 минуты и 54 секунды код NoviceF, не видел когда писал |
| Автор: NoviceF 21.1.2013, 13:20 |
вот об этой eSignal http://hh.ru/employer/116364 |
| Автор: denisminb 21.1.2013, 13:57 | ||||
Да.....Qt я не знаю. Это точно. Надо по другому думать |
| Автор: NoviceF 21.1.2013, 14:30 |
А GUI на чём планировал делать? Если MFC или подобные порождения MS, там свои функции есть для всех этих дел. |
| Автор: volatile 21.1.2013, 18:09 |
Qt здесь знать не нужно. Нужно знать std::map. Это стандартный контейнер. я вам написал без Qt, нужно только правильно рассавить строчки что я привел, в ваш код. (и я как-то не вижу с вашей стороны попыток, это сделать) |
| Автор: Dem_max 22.1.2013, 08:34 |
| Чтобы писать многопоточные приложения работающие с GUI под windows на QT нужно постараться, так как сигналы в QT организованны так что предусматривают блокировку потока GUI. |