:: Visual Foxpro, Foxpro for DOS
Работа с ненормально длинными именами и путями файлов
Sergievsky

Сообщений: 133
Дата регистрации: 24.10.2000
Пишу программку с навигацией а-ля Total Commander.
Возникла суровая необходимость блуждать по папкам (не я их придумал) с очень длинными именами и с такими же именами файлов.
Укоротить я их не имею права. Проводник, Total Commander, WinRar предупреждают что криво будут работать некоторые программы и лучше бы все укоротить. Полные имена файлов с путями попадаются более 254 символов. В частности Проводник часть путей просто преобразует в имя DOS 8+3 чтобы зайти по требуемому адресу.

Выхожу из положения применяя ADIR(ArrayName [, cFileSkeleton [, cAttribute [, nFlag]]]), где nFlag=2.
Имена файлов представляются в нотации DOS 8+3 (как короткие имена)
Все чудесно работает, причем мне не нужно "физически" ходить по каталогам (CD,CHDIR,SET DEFAULT и.т.п.).
Единственно, на экране мне нужно показывать оригинальные длинные имена вместо коротких. Как мне это сделать без вторичного вызова ADIR c параметром nFlag=1 ? Желательно бы обойтись без тяжелой артиллерии в лице Windows API, наверное проще вызвать ADIR второй раз уже не по "*.*", а по найденному короткому имени+расширению.

И еще. Я не уверен, что ADIR с параметром nFlag=2 и параметром nFlag=1 будут одинаково сканировать каталог, то есть порядок файлов в обоих случаях будет идентичен, поэтому и упомянул про ADIR для каждого найденного файла.



Исправлено 1 раз(а). Последнее : Sergievsky, 19.01.18 08:54
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
SYS(2000, ...) тоже имя возвращает
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
Sergievsky

Сообщений: 133
Дата регистрации: 24.10.2000
of63
SYS(2000, ...) тоже имя возвращает
К сожалению, с именами папок эта штука не работает.



Исправлено 1 раз(а). Последнее : Sergievsky, 19.01.18 09:22
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Ну, если не ADIR, то API GetLongPathName, заодно правильный регистр на выходе...
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Sergievsky
Я не уверен, что ADIR с параметром nFlag=2 и параметром nFlag=1 будут одинаково сканировать каталог, то есть порядок файлов в обоих случаях будет идентичен

Будет сканировать одинаково, если файловая структура не изменится.
Но если вы хотите убедиться в этом, то что мешает проверить?
Думаю, если вы просканируете все свои диски и порядок файлов ни разу не будет отличаться, то этого будет достаточно.

Ведь иначе как вообще можно быть в чем-то уверенным? Может, у Фокса и дважды два не всегда четыре. Но пока исключения не обнаружены, считаем, что всегда.
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
...а зачем получать ДВА массива (с короткими и длинными именами). Можно получить массив коротких имен, а потом тем же ADIR преобразовать КАЖДОЕ короткое имя в длинное (заменяем SYS(2000, имя) на ADIR(имя)):
=ADIR(A, маска, "", 2) && все имена в коротком виде
=ADIR(B, ADDBS(путь)+A[1,1])
?B[1,1] && длинное имя 1
=ADIR(B, ADDBS(путь)+A[2,1])
?B[1,1] && длинное имя 2
...
Ratings: 0 negative/0 positive
Re: Работа с ненормально длинными именами и путями файлов
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
...а зачем получать ДВА массива (с короткими и длинными именами). Можно получить массив коротких имен, а потом тем же ADIR преобразовать КАЖДОЕ короткое имя в длинное
Так автор вопроса и делает. Но это не совсем оптимально.
P.S. У меня, к примеру, на томах отключена поддержка имён 8.3 - т.е. что ADIR(,1) что ADIR(,2) возвращают одно и то же "длинное" имя - и да, фокс не в состоянии зайти в папки с "длинными" путями. Впрочем, виндовый проводник тоже


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика