Поиск
Показаны результаты для тегов 'chan'.
-
FatFs: получить LFN имя файла зная SFN
Sergey_Aleksandrovi4 опубликовал тема в В помощь начинающему
Приветствую, форумчане. Ковыряюсь с библиотекой FatFs от ChaN'а. Есть набор файлов в директории диска. Получаю их список с помощью f_readdir(), кэширую в ОЗУ имена короткого (DOS) формата SFN. Контроллер с короткими именами и работает в дальнейшем, здесь проблем нет. Но для вывода на экран GUI нужно длинное имя LFN. Пытаюсь получить его используя функцию f_stat(), но обе строки в структуре FILINFO вопреки ожиданиям содержат короткие SFN имена. Код: FRESULT res; FILINFO file_info; printf("Open <Long filename 1.txt> "); res = f_stat("Dir1/Long filename 1.txt", &file_info); if (res == FR_OK) printf("OK"); else printf("Error!"); printf(".altname==%s", file_info.altname); printf(".fname==%s", file_info.fname); printf("Open <LONGFI~1.TXT> "); res = f_stat("Dir1/LONGFI~1.TXT", &file_info); if (res == FR_OK) printf("OK"); else printf("Error!"); printf(".altname==%s", file_info.altname); printf(".fname==%s", file_info.fname); Вывод: Использую последнюю (ff14) версию библиотеки. Пока придумал лишь одно решение "в лоб": всякий раз при необходимости получить LFN последовательно брать каждый элемент директории с помощью f_readdir() и сравнивать строки исходного SFN и поля FILINFO.altname. При числе файлов 100+ это будет чертовски долго. Два вопроса: 1. Как всё-таки получить LFN строку имея в наличии SFN. 2. Мой подход к сортировке файлов концептуально верен или перемудрил?