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

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Имеется папка Top, в которой расположены блоки тем (Arts, Business,...). В каждом из этих блоков лежат папки с темами (для Arts: Animation, Architecture,...). В каждой из тем лежат папки с сайтами. В папках сайта лежат страницы сайта в текстовом виде: c:\fox\top\Arts\Animation\site001\textpege001.txt

http://www.rusl.ru/img/fox-screen10.gif

Пытаюсь сделать цикл по папкам. Чтобы он собирал информацию в каждой директории для каждой темы. Тоесть сначала шел в Arts, выбирал там первую тему (Animation) и считывая сайты в этой теме создавал бы для них частотники.

Но что-то не получается. Например здесь:
lcBlockCatalog="c:\fox\top\"+ laTopDirectory[m.lnTopA,1]

Почему Фокс не добовляет к путю значение из массива?

LOCAL lcTopCatalog, lnTopA, lnTopD
lcTopCatalog="c:\fox\top\"
lnTopD=ADIR(laTopDirectory,m.lcTopCatalog+"*.*","D")
FOR lnTopA = 1 TO lnTopD
LOCAL lcBlockCatalog, lnBlockA, lnBlockD
lcBlockCatalog="c:\fox\top\"+ laTopDirectory[m.lnTopA,1]
lnBlockD=ADIR(laBlockDirectory,m.lcBlockCatalog+"*.*","D")
FOR lnBlockA = 1 TO lnBlockD
LOCAL lcThemeCatalog, lnThemeA, lnThemeD
lcThemeCatalog="c:\fox\top\"+ laBlockDirectory[m.lnTopA,1]
lnThemeD=ADIR(laThemeDirectory,m.lcThemeCatalog+"*.*","D")
FOR lnThemeA = 1 TO lnThemeD
LOCAL lcTargetCatalog
lcTargetCatalog = STRTRAN(lcThemeCatalog, 'c:\fox\top\', 'c:\fox\dproject\tables\' )
CD (lcTargetCatalog)
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Burn

Сообщений: 5644
Откуда: Днепр
Дата регистрации: 02.01.2002
Может так: lcBlockCatalog="c:\fox\top\"+AllTrim( laTopDirectory[m.lnTopA,1]) ?




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

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Неа
Возвращает все тот же c:\fox\top\. (причем именно с точкой на конце)
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
FOR lnTopA = 3 TO lnTopD




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Ух ты! Похоже то что нужно.

А почему 3?
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Потому что первый элемент это (.) - ссылка на корневой каталог, второй (..) - ссылка на каталог предыдущего уровня и лишь с 3 - названия каталогов текущего уровня.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Тоесть всегда надо начинать считывание данных о каталогах текущего уровня с 3-го элемента массива?
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Петров Андрей

Сообщений: 2506
Откуда: Химки (М.О.)
Дата регистрации: 17.04.2002
Это делается обычно рекурсивно

proc list_dir
LPARAMETERS cdir
LOCAL ARRAY arr(1,6)
m.c=ADIR(arr, m.cdir+'\*.*',"AD")
FOR m.x=1 TO m.c
IF arr[m.x,1]#'.'
IF AT('D',arr[m.x,5])>0
=list_dir(m.cdir+'\'+arr[m.x,1])
ELSE
IF isitfile(arr[m.x,1])
=import_file()
m.file_count=m.file_count+1
ELSE
IF SUBSTR(arr[m.x,1],LEN(arr[m.x,1])-2)='XLS'
m.all_log=m.all_log+'Файл '+m.cdir+'\'+arr[m.x,1]+' не подходит по маске поиска.'+CHR(13)+CHR(10)
ENDIF
ENDIF
ENDIF
ENDIF
ENDFOR

IsItFile - проверка названия файла. У тебя это *.txt те смотрим посл 3 символа...

Первые 2 директории это ссылки на каталоги
. - корневой
.. - предидущий

Так файловая система устроена... (точно про FAT помню)

А то какими они пойдут вообще говоря неизвестно. Те лучше перестраховаться...
IF arr[m.x,1]#'.'




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

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Красиво выглядит Сейчас попробую...
Ratings: 0 negative/0 positive
Re: Пробегаю по директориям.
Igor Korolyov

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

ADIR может возвращать 2 "псевдо-папки" . и .. - они ссылаются соответственно
на саму эту папку, и на её родительскую папку (ну такова структура файловой
системы). Поэтому просто игнорируй элементы "точка" и "две точки" в при
обходе массива возвращаемого ADIR.




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


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

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

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