:: Архив конференции по VFP до 2005 года
Re: Пробегаю по директориям.
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Андрей!

Плохо ты перестраховываешься

? ".Странное имя" # "."

Лучше не полениться, и проверять == или уж SET EXACT подкрутить на время
работы проверки.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005




Отредактировано (09.03.05 19:18)


------------------
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Ошибку выдает Не пойму в чем дело...

http://www.rusl.ru/img/fox-screen11.gif
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Петров Андрей

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
2 Igor Korolev

Вообще то . это ссылка не на саму папку как ты написал а на корневой каталог...

Насчет странного имени файла согласен...
=list_dir('e:')
PROCEDURE list_dir
LPARAMETERS cdir
LOCAL ARRAY arr(1,6)
LOCAL x,c
m.c=ADIR(arr, m.cdir+'\*.*',"AD")
FOR m.x=1 TO m.c
IF !(arr[m.x,1]=='.' OR arr[m.x,1]=='..')
IF AT('D',arr[m.x,5])>0
=list_dir(m.cdir+'\'+arr[m.x,1])
ELSE
IF RIGHT(arr[m.x,1],4)=='.TXT'
? m.cdir+arr[m.x,1]
ENDIF
ENDIF
ENDIF
ENDFOR
RETURN

Надо было сразу доработать... Я ж выдирал из кода побыстрому... А тут и Игорь уже подоспел.




------------------
PS Недочитал тему до конца...
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Burn

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Слишком большая глубина вложения вызовов подпрограмм в Фоксе можно только 50 DO друг из друга вызывать. Придется от рекурсии избавлятся




------------------
В борьбе бобра с козлом побеждает бобро
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
XAndy

Сообщений: 3803
Откуда: Киев
Дата регистрации: 05.02.2004
Вот пару моих функций. Когда-то было нужно.

adird()
+ обрабатывает поддиректории
+ не содержит рекурсии
+ возвращает массив (нет ограничения на длину пути файлов)
- не позволяет накачивать данные в один массив последовательными вызовами
+ в имени файлов возвращается полный путь и имя файла
- не работает с файлами больше 4GB
- имеет ограничение на количество отобранных файлов 13107 до VFP8 вкл.

adirс()
+ обрабатывает поддиректории
+ не использует рекурсию
+ возвращает курсор (нет ограничения на предельное кол-во элементов массивов)
+ позволяет накачивать файлы в один курсор последовательными вызовами
+ в имени файлов возвращается полный путь и имя файла
+ возвращает корректные размеры для файлов больше 4GB
- имеет ограничение на длину пути 254

Можно доработать adirc() на предмет использования memo-поля вместо текстового, тогда получится более универсальный вариант. Меня и эти устроили.
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Петров Андрей

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
2 Burn

Ну вообще то у Rusl написана безконечная рекурсия - если ты не заметил.

Те каталог для сканирования задается внутри функции (см картинку с ошибкой) и функция до безконечности повторяет ADIR одного каталога...




------------------
PS Недочитал тему до конца...
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
А я бы в такой ситуации воспользовался Filer.DLL и не стал бы городить огород из рекусивных функций, хотя иногда бывает что только так и можно решить задачу.




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive


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

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

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