![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
Здравствуйте.
Создаю консольное приложение в MS Visual Studio. На данном этапе разработки программы необходимо: после ввода пути к папке в качестве параметра, определить какие файлы находятся в данной папке. Собственно вопрос. Как можно получить список файлов, которые находятся в папке? Заранее спасибо. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
FindFirstFile/FindNextFile
|
|||
|
||||
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
Спасибо.
Но компилятор ругается на строчку hFind = FindFirstFile("C:\\Windows\\*.exe", &FindData); Error 1 error C2664: 'FindFirstFileW' : cannot convert parameter 1 from 'const char [17]' to 'LPCWSTR' D:\CPP\find_dile\find_dile\find.cpp 19 Error 2 IntelliSense: argument of type "const char *" is incompatible with parameter of type "LPCWSTR" d:\cpp\find_dile\find_dile\find.cpp 19 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
FindFirstFile(L"C:\\Windows\\*.exe", &FindData);
|
|||
|
||||
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
Спасибо большое. Получилось.
А Вы могли бы объяснить что делает "L"? и где об этом преобразовании можно почитать? Добавлено через 2 минуты и 17 секунд Нет, не получилось. Почему-то вместо имени файлов выводятся адреса... |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
потому что ты юникодную строку пытаешься вывести в стандартный поток? ;) |
|||
|
||||
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
А как надо сделать?
Что делает буковка L? Надо перед выводом преобразовать строку как-то? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
покажи как выводишь. это: http://en.wikibooks.org/wiki/Windows_Programming/Unicode Это сообщение отредактировал(а) boostcoder - 27.4.2011, 23:01 |
|||
|
||||
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
Собственно вот моя программа:
В папке "a" лежит 5 файлов. Он мне почему-то выводит 5 одинаковых строчек (хотя имена файлов естественно разные): 0039F77C 0039F77C 0039F77C 0039F77C 0039F77C Вообще мне все названия файлов нужно будет сохранить куда-нибудь, например в строковый массив. Хотя размер его неизвестен будет...Как тут лучше поступить? Куда записать имена файлов, чтобы потом с ними можно было бы работать как со строками? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
во первых - в опциях проекта отключи поддержку юникода. так: http://clip2net.com/clip/m47996/1303935165...tt2979-27kb.png
во вторых - список файлов можно хранить в std::vector<std::string> |
|||
|
||||
Ortistx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.4.2011 Репутация: нет Всего: нет |
Отключил, получилось, показывает список файлов. Спасибо.
А лучше во всех проектах по умолчанию отключать поддержку юникода? |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
очень зависит. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Лучше писать сразу юникодовые программы и не париться (большинство функций WinAPI, работающих со строками, имеют две версии FunctionA и FunctionW, а так же макрос Function, который в зависимости от настроек, заменяется FunctionA или FunctionW; так же есть макросы _tmain - замена main(), TCHAR - замена char, _TEXT("<строка>") или _T('<символ>') - преобразования строки/символа в юникод по необходимости). А в твоей программе следует использовать _findfirst/_findnext, чтобы не заморачиваться. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Ау, модераторы! А можно, куда нибудь в шапку раздела прибить большими гвоздями -
А то достало уже, честное слово. Каждая 5я тема об этом ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
xvr, создай соответствующую тему - прикреплю
Это сообщение отредактировал(а) bsa - 28.4.2011, 11:44 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |