Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как избежать регистра при проверке расшиерния? |
Автор: Miyka 13.3.2009, 17:14 | ||
Здравствуйте. Я не опытный программист на С++. Столкнулся с проблемой проверки расширения файла, а именно при открытии. Написанный мною и моим товарищем код, очень привязан к регистру. Но всех вариантов с каким регистром можно писать буковки в расширении не перебрать и следовательно в этом и есть проблема. Как сделать так что бы проге было все ровно каким регистром написано расширение?
В общем примерно так... если какие то вопросы ко мне то задавайте... |
Автор: andrew_121 13.3.2009, 17:39 |
Приведи свои расширения и получаемые к одному регистру, и сравнивай. |
Автор: Miyka 13.3.2009, 17:42 |
Гениально!!! Щас поработаю над этим. А вообще адекватно делать проверку расширения таким образом? |
Автор: Miyka 13.3.2009, 18:39 | ||
нет, не понятно т.к. не работает.
не понимаю.... Еще вопрос: адекватно ли использовать такой метод проверки? |
Автор: andrew_121 13.3.2009, 18:57 |
Miyka, Выложи полный код функции! Ваще въехать не могу. |
Автор: Miyka 13.3.2009, 18:59 | ||
|
Автор: zim22 13.3.2009, 19:02 | ||
Miyka, вариант с использованием STL
|
Автор: andrew_121 13.3.2009, 19:05 | ||
Miyka, Покажи декларацию StartDir. Добавлено @ 19:18 Вот я все понимаю, но какая гарантия того что, директория не может называться readme.txt ? Вот:
|
Автор: Miyka 13.3.2009, 19:27 | ||||
Короче я понял, значит есть TreeView, через него открывается файлег.
char* dir это ИмяФайла, то есть то что мы жмакаем в ТриВью. Смысл сей функции понять файл или папка, файлы нужно выбрать с нужным мне расширением, но столкнулся с тем что он не понимает если написано расширение заглавными буквами. Дальше происходит следующее:
эээ... |
Автор: andrew_121 13.3.2009, 19:34 |
Miyka, По ходу... тебе в другой раздел. Хотя... |
Автор: Miyka 13.3.2009, 19:37 |
куда в другой раздел? |
Автор: inside_pointer 13.3.2009, 20:11 | ||
нужно копировать его из пути во временный массив, в нём уменьшить все буквы, а потом сравнивать каждое из набора типа "txt php htm html" с ним нельзя искать в наборе, потому что htm будет выпадать на html (если вдруг htm из списка расширений будет удалено, то оно всё равно продолжит выпадать, так как является частью html) |
Автор: Miyka 13.3.2009, 20:37 | ||
я запутался inside_pointer, спасибо за замечание, но ![]() zim22, не все понимаю что в
andrew_121, про то что папка может назваться ЫЫЫ.txt не подумал кста что происходит в твоем коде...? |
Автор: zim22 13.3.2009, 22:00 | ||
вот тот же код, но в С исполнении. так понятней?
|
Автор: Rififi 13.3.2009, 22:07 | ||
функцию isExtensionCorrect можно подсократить:
:gigi: |
Автор: inside_pointer 13.3.2009, 22:47 |
вот пример: ищёт расширение, если оно есть проводит поиск среди зарегистрированных, выводит пути с найденными update: чуть поправил комменты, и расширил список расширений, а, ну и ещё доработал функцию, которая отрезает и преобразовывает расширение, чтобы C:\Temp\file. яснее обрабатывалось; а определять, файл это или папка, можно путём открытия папки как файла и проверки кода ошибки через errno |
Автор: Miyka 16.3.2009, 18:04 |
сорри но что у мну не получаеться прикрутить к моей программе. Я ЛОЛ. Спасибо за советы. |
Автор: inside_pointer 16.3.2009, 20:54 |
бинарный поиск позволяет не перебирать все элементы, а находить нужный в два три шага (на данном множестве), а просто поиск можно заюзать, чтобы расширение отделить для преобразования |