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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Замена символов имени файла  (Прочитано 8309 раз)
ruzik
Гость
« : Июнь 01, 2012, 21:47 »

Здравствуйте, существует следующая задача:
Нужно скачать иконку с сайта и сохранить её, именем должно быть имя сайта. Но проблема в точке в адресе сайта из-за которой возникает проблема сохранения иконки с таким именем. Соответственно нужно как-то заменить эти точки(восстанавливать имя сайта из названия иконки также требуется).
Но заменив на символы типа -_ и тд, можно добиться неправильной трактовки, например иконки этих сайтов будут совпадать:
forum-site.com
forum.site.com
Есть ли такой символ, который может быть включен в название иконки, но не может быть частью адреса сайта?
Должно работать на Windows, Mac Os X и Linux.
Заранее спасибо!
Записан
ruzik
Гость
« Ответ #1 : Июнь 01, 2012, 21:56 »

Символ уже придумал - левая или правая скобка.
Теперь вопрос на всех ли трех системах, указанных мною, скобка может быть частью имени файла.
На Windows - да может.
А вот Mac Os X  и Linux возможности проверить нет, не подскажите как там с этим дело?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Июнь 01, 2012, 22:58 »

Но проблема в точке в адресе сайта из-за которой возникает проблема сохранения иконки с таким именем.

Цитировать
bool QImage::save ( const QString & fileName, const char * format = 0, int quality = -1 ) const

Saves the image to the file with the given fileName, using the given image file format and quality factor. If format is 0, QImage will attempt to guess the format by looking at fileName's suffix.

The quality factor must be in the range 0 to 100 or -1. Specify 0 to obtain small compressed files, 100 for large uncompressed files, and -1 (the default) to use the default settings.

Returns true if the image was successfully saved; otherwise returns false.
Записан
andrew.k
Гость
« Ответ #3 : Июнь 01, 2012, 23:53 »

лучше не морочай себе голову и сохраняй как тебе удобно.
А в отдельный файл пиши соответствие имен файлов и имени сайта.
somesite.com=93280234.png
some-site.com=92402374.png

А твой подход это костыли какие-то.
Записан
ruzik
Гость
« Ответ #4 : Июнь 02, 2012, 10:19 »

Оказывается я все-таки был не прав и точкa в Windows может быть частью имени файла кроме обозначения его расширения, а в Windows и Linux так же?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 02, 2012, 10:31 »

Оказывается я все-таки был не прав и точкa в Windows может быть частью имени файла кроме обозначения его расширения, а в Windows и Linux так же?
В OSX может. Расширение часто игнорируется если тип файла не ноль. Лучше не связываться с изучением деталей различных файловых систем, а хранить имя сайта в хеше, как уже сказали выше. Обойдется дешевле
Записан
mutineer
Гость
« Ответ #6 : Июнь 02, 2012, 11:26 »

Оказывается я все-таки был не прав и точкa в Windows может быть частью имени файла кроме обозначения его расширения, а в Windows и Linux так же?

В линуксе сколько угодно точек может быть в имени файла, а может и не быть вообще. Никаких проблем это не вызовет (разве что точка в начале имени файла трактуется как маркер "скрытый файл")
« Последнее редактирование: Июнь 02, 2012, 14:00 от mutineer » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Июнь 02, 2012, 13:05 »

В линуксе сколько угодно точек может быть в имени файла, а может и не быть вообще. Никаких проблем это не вызовет (разве что точка в начале имент файла трактуется как маркер "скрытый файл")
Мало того в имени файла могут быть вообще любые символы - в unix-e никаких ограничений нет.
Записан

Qt 5.11/4.8.7 (X11/Win)
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #8 : Июнь 02, 2012, 13:52 »

Мало того в имени файла могут быть вообще любые символы - в unix-e никаких ограничений нет.
Даже разделитель каталогов?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Июнь 02, 2012, 14:44 »

Даже разделитель каталогов?
Поправочка: за исключением '/' и '\0'.
Записан

Qt 5.11/4.8.7 (X11/Win)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #10 : Июнь 02, 2012, 17:22 »

слэш в мак ос вроде может быть в имени файла (наверняка смогу сказать попозже)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Июнь 02, 2012, 17:30 »

слэш в мак ос вроде может быть в имени файла (наверняка смогу сказать попозже)
Может для файловой системы, но потом возникают трудности с парсингом полного имени. А вот двоеточие нельзя, оно раньше было разделителем пути (до того как поперся posix)
Записан
ruzik
Гость
« Ответ #12 : Июнь 02, 2012, 21:49 »

Понятно, спасибо за помощь!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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