Что нового

Рекурсивная работа и Локальная переменная

magros

Новичок
Сообщения
20
Репутация
1
Доброго часа!
Задача у меня такая
в каталоге $Path есть файлы и папки которые периодически добавляются, поскольку лениво проверять все каталоги руками будем автоматизировать

вспомнилась добрая рекурсия но тут возникла проблема
Код:
Func _RecursiveFinder ( Local $sPath )
Local $sFolder
Local $sFiles
Local $sNPath = $sPath & '\' & $sFolder
........................
_RecursiveFinder ( $sNPath )
EndFunc


ну скажем вот в таком примитивном коде переписываются или нет переменные, т.е. в ходе рекурсии при втором выполнении потеряет ли локальная переменная свое значение из первого выполнения?

п.с. поклон за предложенный вариант реализации ?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
1. Переменные, объявленные внутри функции действуют только для этой функции в пределах одного вызова.
2. Для сохранения данных определи переменные вне функции, т.е. глобальные.
3. Тема поиска файлов обсуждалась на нашем форуме много раз, воспользуйся поиском.
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Тут на форуме, писали уже, что вызов функции с самой себя - это уже неверное решение.
Код:
Global $sNPath
$sNPath = @ScriptDir
While 1
; условия

_RecursiveFinder ( $sNPath )
Sleep(1000)
WEnd

Func _RecursiveFinder ($sPath )
Local $sFolder
Local $sFiles
$sNPath = $sPath & '\' & $sFolder
;........................
Return $sNPath
EndFunc

Начни хотя бы вот так, а остальное через поиск.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ну почему же, рекурсия довольно таки полезная штука. Вот пример поиска файлов.
 
Автор
M

magros

Новичок
Сообщения
20
Репутация
1
Guezt сказал(а):
Тут на форуме, писали уже, что вызов функции с самой себя - это уже неверное решение.

с каких пор рекурсия стала неверным решением???
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Guezt [?]
Тут на форуме, писали уже
не было такого. по крайней мере, от людей более менее знакомых с программированием, в частности с AutoIt.
Не вводи людей в заблуждение
 
Автор
M

magros

Новичок
Сообщения
20
Репутация
1
Yashied сказал(а):
Ну почему же, рекурсия довольно таки полезная штука. Вот пример поиска файлов.
огромное спс Ваш пример ответил полностью на мой вопрос
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Kaster [?]
не было такого. по крайней мере, от людей более менее знакомых с программированием, в частности с AutoIt.Не вводи людей в заблуждение


magros [?]
с каких пор рекурсия стала неверным решением???

Я имел ввиду, что рекурсия имеет ограничение:
Максимальная глубина рекурсивных вызовов функции: 5100 уровней взято тут:
http://autoit-script.ru/index.php?topic=118.msg673#msg673

конечно, если 5100 вызовов хватит, то прошу извинить меня, но я думал что это:
[?]

в каталоге $Path есть файлы и папки которые периодически добавляются, поскольку лениво проверять все каталоги руками будем автоматизировать

подразумевает непрерывный мониторинг каталогов\файлов.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Guezt [?]
я думал что это...

Это не имеет отношение к поиску файлов (для данной темы). Это озночает, что для

C:\Dir1\Dir2\...\DirN

N не может быть больше 5099.

:blink:

Для обычных смертных этого хватит за глаза.
 
Верх