Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программное определение вложенных подкаталогов, VFoxPro 
:(
    Опции темы
Cashey
Дата 20.8.2004, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Всем привет! Сталкнулся с такой задачей, есть потребность программно определить все подкаталоги (включая многократно вложенные) в заданной директории, их количество и название. Да вот что-то я не нашел подходящей ф-ции, которая бы возвращала бы название подкаталога и вообще возвращала бы информацию о его наличии.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
oks
Дата 7.12.2004, 09:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Если речь о Fox, то есть такая функция как ADIR() , которая закидывает информацию о файлах и папках, содержащихся в заданной или текущей папке, в массив. При передаче третьего параметра "d" учитывает вложенность.
У меня-то несколько иной вопрос - есть ли в Fox оператор или функция, определяющая размер заданной папки.
  Вверх
Cashey
Дата 8.12.2004, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



oks читай внимательно вопрос! ф-ция ADIR() возвращает информацию о файлах, но не может быть использованна для заполнения установки SET PATH, т.к. не выделяет каталоги. Можно конечено попробовать пробежаться циклом, анализируя атрибут "D". Я попробую.

Цитата(oks @ 7.12.2004, 09:45)
У меня-то несколько иной вопрос - есть ли в Fox оператор или функция, определяющая размер заданной папки.

А вот эту задачу как раз можно решить с помощью ADIR(). Занести в массив информацию о файлах и пробежавшись циклом по массиву сложить их размер (размерность файла - это второй столбец полученного массива)


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
oks
Дата 8.12.2004, 08:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











и все же согласись, что наши задачи имееют одно и то же решение smile
а с циклом-то конечно можно, хотелось проще smile
  Вверх
Cashey
Дата 9.12.2004, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Цитата(oks @ 8.12.2004, 08:11)
и все же согласись, что наши задачи имееют одно и то же решение

Обе задачи связана с работой с каталогами, поэтому неудивительно, что у них может быть однокоренное решения. Но оптимальное решение пока не найдено smile


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 9.12.2004, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



А разве это не задачка рекурсивного обхода дерева ?
PM MAIL WWW ICQ   Вверх
Cashey
Дата 9.12.2004, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



AntonSaburov
???
не вижу в этой задаче ничего рекурсивного, пошаговый обход каталогов...


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 10.12.2004, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата(Cashey @ 9.12.2004, 23:34)
не вижу в этой задаче ничего рекурсивного, пошаговый обход каталогов...

Так он как раз и будет рекурсивно вызывать сам себя.

Пример мнемокодом

Код

function GetFiles(String dir, List allFiles)
{
  File[] files=getFilesFromDir(dir)  // здесь получаем список файлов в текущем каталоге
  for(int i=0; i<files.length; i++) {
     // Может сразу здесь добавлять в список - тогда список будет содержать и каталоги тоже
     if(files[i].IsDir()) {
        GetFiles(dir+"\"fiels[i], allFiles);  // ВОТ ЭТОТ РЕКУРСИВНЫЙ ВЫЗОВ
     }
     else {
        allFiles.add(files[i]);  // добавить файл в список. Если нудны ТОЛЬКО файлы
     }
  }  
}

PM MAIL WWW ICQ   Вверх
Cashey
Дата 10.12.2004, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Мне нужны ТОЛЬКО каталоги.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 14.12.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата(Cashey @ 10.12.2004, 18:58)
Мне нужны ТОЛЬКО каталоги.

Ну тогда что-то типа такого

Код

function GetFiles(String dir, List allFiles)
{
 File[] files=getFilesFromDir(dir)  // здесь получаем список файлов в текущем каталоге
 for(int i=0; i<files.length; i++) {
    if(files[i].IsDir()) {  // Если это каталог
       allFiles.add(files[i]);  // добавить каталог в список.
       GetFiles(dir+"\"fiels[i], allFiles);  // ВОТ ЭТОТ РЕКУРСИВНЫЙ ВЫЗОВ
    }
 }  
}

PM MAIL WWW ICQ   Вверх
Cashey
Дата 14.12.2004, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Ну я примерно так и сделал, если это рекурсия, ну и пусть ей и остается? smile


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.