Поиск папок и файлов по шаблону | |
---|---|
VeterVFP Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Приветствую.
Через ADIR спокойно получаю список файлов ПО МАСКЕ в КОНКРЕТНО заданных папках. Но как получить такой список, если в именах папок тоже есть маска? Пример
Можно ли этого добиться или придется много-ходовку какую-то делать с циклом? |
Re: Поиск папок и файлов по шаблону | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
"Добиться" того чтобы функция ADIR() работала не так как она сделана, задумана и описана в хелпе, конечно же нельзя. Реализовать алгоритм используя рекурсию, или циклы с наполнением промежуточных курсоров/массивов результатами прохода по иерархии объектов файловой системы - не составляет решительно никаких проблем.
Второй параметр функции, к сожалению, является по сути двумя независимыми параметрами (возможно это как раз и приводит к "недоразумению"). Необязательным ПУТЁМ (абсолютным или относительным) к некоторому каталогу (по умолчанию берётся текущий) и "шаблоном поиска" (search criterion или file skeleton). подстановочные символы допустимы лишь в этом самом шаблоне поиска, но не в пути. ADIR() ищет файлы всегда исключительно в ОДНОМ и строго определённом каталоге. ------------------ WBR, Igor |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() заранее известно, что предлагаемый путь путь придется разобрать на подпути (рекурсивно конечно, рассматривая каждый в конце подпуть в конце...
> Через ADIR спокойно получаю список файлов > Но как получить такой список, если в именах папок тоже есть маска? ТС понимает ли, в каком виде он хочет получить массив чисто имен, ... какой массив вы хотели бы получить из ADIR в вашем случае? Доб. Неприятности в "произвольном LIKE-подобном указании пути" будут такие, например C:\*\myLikeCat\*.* Вы будете вынуждены В ЛЮБОМ СЛУЧАЕ посмотреть на весь C:\*.*, или его подмножества (бывает и не слабого обьема)... Исправлено 1 раз(а). Последнее : of63, 29.05.18 23:01 |
Re: Поиск папок и файлов по шаблону | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Что за вопрос - конечно же "правильный" ------------------ WBR, Igor |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
ф имел введу, что в первой колонке - ЧИСТО ИМЯ файла, с расширением. В У предлагаемой теории (мой стайл) предлагается возвращать имя с ПУТЕМ (относително запрошенного пути... БЛИН ЗАДРАЛСЯ ПИСАТЬ!
) Татьяне написал аналог ADIR. Все просто! Рекурсия - ПРОСТО (кто не может понять - пусть проходят мимо), Кто не может поняьб Си шарпы - тоже пусть идут мимо. Здесь фоксовое болото. И вобще... относитесь к фоксистам не как к отстойникам и дегенератам ) Исправлено 1 раз(а). Последнее : of63, 29.05.18 23:08 |
Re: Поиск папок и файлов по шаблону | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
прорвало Олега
По топику - сам так делал, в функции ADIR, организовывал ее рекурсивный вызов, в итоге пробегала по всем вложенным папкам начиная с указанной, на выходе курсор с путями и файлами ... и как говорится делай с ним что хошь ))) |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
И главное - умение отсечь лишние детали пути, Андрей... Давай код Андрей, иначе это все ничего не стОит, это так ) Даже поверю, что кодес есть )
Доб. - youtu.be - всеми любимый ДП () Напился, поискал на нашем форуме слово "радуюсь"... не нашлось - нашлось... наш сайт так и будет тупеть и умирать? Давайте его похерим что-ли... Шутка, конечно, но блин, ну это надо как то содержать , модернизировать соотсв с временем... Доброхотов кроме Боба и Джойса (и Максимова) походу нету?... Странно, у них то что за интерес... Исправлено 2 раз(а). Последнее : of63, 30.05.18 00:31 |
Re: Поиск папок и файлов по шаблону | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Тю, в чем проблема то ... вот она кода ))) раскопал и выдрал, старая, но рабочая ...
Для своих специфических нужд когда-то делал ... причесать, повыкидывать лишнее |
Re: Поиск папок и файлов по шаблону | |
---|---|
VeterVFP Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Игорю спасибо за разъяснение. Инфу принял
Олегу за "философию" и "выклянчивание" кОдеса у Андрея Андрей, процедуру забрал для изучения. Спасибо! |
Re: Поиск папок и файлов по шаблону | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это уже частная задача - помимо прохода по вложенным каталогам, ещё и определённое "правило совпадения" к именам каталогов применять. Я, честно говоря, с такой потребностью никогда не сталкивался - все рекурсивные обходы дерева файловой системы всегда требовались БЕЗ отсева каталогов - т.е. без "масок" для них. Вот файлы - те да, обычно не все подряд а по той или иной маске отбирались (чаще по расширению имени файла, и при том не в самом ADIR() ограничение задавалось, т.к. там несколько вариантов не указать, а в последующем коде цикла по массиву со всеми именами файлов). Т.е. грубо говоря это практически всегда код типа:
Думаю вполне очевидно куда надо вставлять условие для фильтрации ещё и имён папок, раз уж возникла такая нужда P.S. поправил сравнение имён для псевдо-папок "." и ".." - т.к. при штатной установке SET EXACT OFF функция INLIST() не подходит, т.к. работает по "начальным символам", а не по точному совпадению всех символов сравниваемых строк. Впрочем, иногда именно папки имена которых начинаются с точки и требуется отбрасывать из обработки ------------------ WBR, Igor Исправлено 2 раз(а). Последнее : Igor Korolyov, 31.05.18 14:39 |
Re: Поиск папок и файлов по шаблону | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Рекурсия - это неплохо, если бы в Фоксе не было ограничения на program nesting levels - всего 128.
Я бы не стал пользоваться рекурсией для решения этой задачи - никогда не знаешь, в какой момент "рванет". Ограничения на размер и количество записей в таблице выглядят более привлекательными - бежишь себе по курсору, дописывая в конец содержимое элементов ADIR(), когда наталкиваешься на папку - обходишься единственным сканом и никаких рекурсий. |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ограничение на длину имени файла в винде раньше сработает (ок. 255 символов), если только не делать однобуквенных директориев 128 шт
|
Re: Поиск папок и файлов по шаблону | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В 9-ке есть в конфиге STACKSIZE - до 64К можно поднять уровень вложенности. Но я полагаю что вряд ли на фоксе стоит решать задачи требующие обхода НАСТОЛЬКО глубоко вложенных папок Это ж по сути надо от корня диска начинать, да и далеко не на всяком обычном юзерском диске найдутся хотя-бы 20 уровней вложенности папок...
------------------ WBR, Igor |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Вот прога, которая с рекурсией, попробуйте. У меня в проекте какой-то дремучиий вариант, а этот нативный. Заточен под поиск файлов по маске, в поддиректориях, поддиректории по маске не разбираются, но можно и приделать (для этого надо приделать в интерфейс маску для поддиректориев...). Упор был сделан на похожесть интерфейса на штатный интерфейс ADIR. ...Типа, набираем ADIR в IDE фокса, IntelliSence подсказывает синтаксис, мы набираем команду, а потом чуть подменяем имя функции на нашу, и она возвращает нам имена с путями.
Часть текста скрыта
Доб. Про передачу "второго" параметра (задать маску для директориев) - сделал бы так: вот у нас 2м параметром ADIR строка (путь и маска в одном флаконе - обычный путь к файлу). Решение - приделываем опциональную вторую подстроку, через CHR(13). В самой нашей ф-ии читаем строку-маску, и если она состоит из двух строк, то первая - это как обычно путь+маска, вторая - маска на поддиректории. Исправлено 2 раз(а). Последнее : of63, 31.05.18 18:34 |
Re: Поиск папок и файлов по шаблону | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
для 99% случаев думаю хватит ... и "рвануть" не обязано - можно же предусмотреть заглушку на 127-ом шаге |
Re: Поиск папок и файлов по шаблону | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не на "шаге", а на PROGRAM(-1). Так то ты не знаешь с какого уровня стека запустят твою функцию
------------------ WBR, Igor |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
(заглушки и предохранители - это хорошо, но во что превратится прога, в сплошные IF-ы, и раздумья "что же вернуть из подпрограммы, если параметр передан не ожидаемые ею..., и генерить ли ошибку...". Приходится считать все операторы потенциально всеядными, т.е. безошибочными, но некоторые, которые типа "дисковые", или "число м.б. большим", или "хз че там примется при импорте" - мы обрамляем в TRY (и опять, а что делать если ошибка?))
|
Re: Поиск папок и файлов по шаблону | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
ну в данном случае уровень вложенности ваще идет как отдельный честный параметр - в чем проблема его значение разобрать ... не, я конечно понимаю что может и выглядит не совсем кошерно - но на практике вполне удобоваримо )))
Тут другая проблемка - с обходом папок куды у юзверя доступа нету - это надо было бы разрулить (в том древнем что я выкладывал это не решено фактически) Исправлено 1 раз(а). Последнее : AndyNigmatec, 31.05.18 19:33 |
Re: Поиск папок и файлов по шаблону | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> куды у юзверя доступа нету
А фокс как это решает? Ответ - никак. В наших "прогах" мы не суемся за пределы видения файловой системы фоксом и его юзером. Будет ошибка, если нам дали видеть директорий, которого нам видеть не должно. Вобщем, по опыту с файл-сервером, ниче плохого не будет. В локально сети есть понятие "Ресурс", ничего не разшареного ADIR не увидит. |
Re: Поиск папок и файлов по шаблону | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
в новомодных виндах adir таки полезет (увидит) папки читать которые не сможет (я про локальные) ...
|
© 2000-2024 Fox Club  |