Russian Qt Forum
Ноябрь 25, 2024, 13:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Учет регистра букв в именах файлов в разных ОС  (Прочитано 4231 раз)
Sancho_s_rancho
Гость
« : Январь 18, 2010, 11:33 »

Программа, запущенная на линуксе в автоматическом режиме работает с файлами, которые пишут на общий диск Windows машины. Unix-подобные ОС учитывают регистр букв, Windows игнорирует и вин. программы этим пользуются. Имена файлов и каталогов известны, но из разных источников(сгенерированные разными вин. программами) они приходят в непредсказуемом регистре. К примеру: Linux программа должна обработать файл abcd.bin пришедший на общий диск с вин. машины. Вин машины присылают имя файла с произвольным регистром( /bla-bla/Abcd.bin, /BLA-BLA/ABCD.bin) и сам файл создается  с произвольным регистром. Результат для Linux: файл не найден. Исправить поведение программ на вин. машинах не представляется возможным. Каким образом лучше реализовать операции над файлами в программе на линукс системе. Понятно, что это будут костыли, но необходимо какое-то временное решение.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Январь 18, 2010, 11:38 »

Получить список файлов и регистронезависимо сравнить с нужным названием.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sancho_s_rancho
Гость
« Ответ #2 : Январь 18, 2010, 11:55 »

Это несколько проблематично.
Вин. программа создала файл /bla/abcd.bin и сказала линукс программе /BLA/Abcd.bin
Придется "вручную" разбирать всю строку, т.е. все вложенные каталоги и только потом уж файл. Неприятно.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Январь 18, 2010, 17:53 »

С помощью QDir получать списки файлов, в нём смотреть:
QDir::CaseSensitive
QDir::entryInfoList
QDir::entryList
Записан

Юра.
nixman05
Гость
« Ответ #4 : Январь 18, 2010, 18:19 »

Это несколько проблематично.
Вин. программа создала файл /bla/abcd.bin и сказала линукс программе /BLA/Abcd.bin
Придется "вручную" разбирать всю строку, т.е. все вложенные каталоги и только потом уж файл. Неприятно.

Код
C++ (Qt)
QString createdFile;
QString sendedFile;
 
if (createdFile.toLower()==sendedFile.toLower())
{
  //do task
}
 
 

Вместо toLower можно использовать toUpper().
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.214 секунд. Запросов: 22.