Проблемы с именами файлов и папок

Предыдущая тема Следующая тема Перейти вниз

Проблемы с именами файлов и папок

Сообщение  valdimir в Ср Фев 11, 2015 9:10 pm

Бывает, что имена файлов или папок содержат символы которые не может прочитать команда "DIR()". Вместо этих символов в итоге команда DIR() отображает знак вопроса и ничего с такими файлами нельзя сделать: копировать, удалять переименовывать. Сама Windows позволяет выполнять любые манипуляции с такими файлами, хотя зачастую вместо "трудных" символов отображаются квадратики, архиваторы тоже справляютя с этой задачей. Логически напрашивается вывод что обработка имён файлов должна вестись в Unicode кодировке. Подскажите как это можно реализовать в FreeBasic?

valdimir

Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  Vadim Weinberg в Вт Фев 17, 2015 3:57 am

Если не читаемые буквы кириллические - спасибо Кириллу и Мефодию за такое счастье. Вот подгадили!

Думаю надо использовать API-функции. Обычно они корректнее работают с разными кодировками.

Vadim Weinberg

Сообщения : 18
Дата регистрации : 2010-07-08
Возраст : 53
Откуда : СПб

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  Замабувараев в Пт Фев 20, 2015 4:55 pm

Кирилл и Мефодий тут ни при чём. Это давний баг фрибейсика: функция Dir не работает с юникодом.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  Vadim Weinberg в Пн Фев 23, 2015 12:38 am

zamabuvaraeu пишет:Кирилл и Мефодий тут ни при чём. Это давний баг фрибейсика: функция Dir не работает с юникодом.

Очень даже причём. Вредители. Дюжина кодировок под разные платформы.

Мне кажется, Dir работает. Только .BAS файл надо сохранять в "Save As Unicode" и использовать WString.

Вот пример.
http://www.animal-pay.ru/TMP/DIR.zip
Лучше распаковать в отдельный каталог.

Только от этого пользы мало. Мне не удалось заставить работать Name, Kill и FileCopy с Кириллическими названиями файлов.

Vadim Weinberg

Сообщения : 18
Дата регистрации : 2010-07-08
Возраст : 53
Откуда : СПб

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  valdimir в Ср Мар 04, 2015 1:30 pm

Кое-как соорудил костыль для работы с такими файлами. На помощь к нам приходит старый добрый DOS. Если команда "DIR" выдаёт имя со знаками вопроса "?" - значит нужно получить это имя в кодировке DOS~8.3. Через косоль (Shell) запускаем команду "Dir /x" в нужной папке и из вывода команды выдираем короткое имя в кодировке DOS~8.3 (длинное там будет так же со знаками вороса). Далее имея это короткое имя можно уже работать с таким файлом: копировать, удалять и в итоге переименовать в исходное, заменив знаки вопроса например на символ прочерка "_". Тоже самое касается и имён папок. Ничего лучшего на ум пока не пришло.

valdimir

Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  Замабувараев в Ср Мар 18, 2015 8:44 pm

Не работает, даже если сохранить исходник в юникоде и в самом начале прописать константу #define unicode. Нужно использовать функции операционной системы.
avatar
Замабувараев

Сообщения : 99
Дата регистрации : 2008-08-20
Возраст : 33
Откуда : Красноярск

Посмотреть профиль http://www.freebasic.su

Вернуться к началу Перейти вниз

Re: Проблемы с именами файлов и папок

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения