Проблемы с именами файлов и папок
Участников: 3
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Проблемы с именами файлов и папок
Бывает, что имена файлов или папок содержат символы которые не может прочитать команда "DIR()". Вместо этих символов в итоге команда DIR() отображает знак вопроса и ничего с такими файлами нельзя сделать: копировать, удалять переименовывать. Сама Windows позволяет выполнять любые манипуляции с такими файлами, хотя зачастую вместо "трудных" символов отображаются квадратики, архиваторы тоже справляютя с этой задачей. Логически напрашивается вывод что обработка имён файлов должна вестись в Unicode кодировке. Подскажите как это можно реализовать в FreeBasic?
valdimir- Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.
Re: Проблемы с именами файлов и папок
Если не читаемые буквы кириллические - спасибо Кириллу и Мефодию за такое счастье. Вот подгадили!
Думаю надо использовать API-функции. Обычно они корректнее работают с разными кодировками.
Думаю надо использовать API-функции. Обычно они корректнее работают с разными кодировками.
Vadim Weinberg- Сообщения : 18
Дата регистрации : 2010-07-08
Возраст : 59
Откуда : СПб
Re: Проблемы с именами файлов и папок
Кирилл и Мефодий тут ни при чём. Это давний баг фрибейсика: функция Dir не работает с юникодом.
Re: Проблемы с именами файлов и папок
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
Возраст : 59
Откуда : СПб
Re: Проблемы с именами файлов и папок
Кое-как соорудил костыль для работы с такими файлами. На помощь к нам приходит старый добрый DOS. Если команда "DIR" выдаёт имя со знаками вопроса "?" - значит нужно получить это имя в кодировке DOS~8.3. Через косоль (Shell) запускаем команду "Dir /x" в нужной папке и из вывода команды выдираем короткое имя в кодировке DOS~8.3 (длинное там будет так же со знаками вороса). Далее имея это короткое имя можно уже работать с таким файлом: копировать, удалять и в итоге переименовать в исходное, заменив знаки вопроса например на символ прочерка "_". Тоже самое касается и имён папок. Ничего лучшего на ум пока не пришло.
valdimir- Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.
Re: Проблемы с именами файлов и папок
Не работает, даже если сохранить исходник в юникоде и в самом начале прописать константу #define unicode. Нужно использовать функции операционной системы.
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|