nesco писал(а):
Что-то я не совсем понял -- а где происходит восстановление указателя, или тут некоторый другой механизм?из разумно приведенного тобой фрагмента:
Первая строка - сохранение указателя на структуру в поле объекта, чтобы народ мог пользоваться результатами (через точки Count и ShortName)
Сама структура - локальная переменная (т.е. лежит в стеке и размером эдак так байт 300)
Рекурсивный вызов метода Search (3-я строка снизу) изменит этот указатель на новую структуру из стека.
Закончили рекурсию (т.е. обработку папки), надо восстанавливать. Ну вот же вторая строка снизу -- она не просто тупо пишет то же самое, а именно восстанавливает. Потому что указатель был изменен рекурсивным вызовом (и, кстати говоря, уже не действительный)
Собственно, все мои опасения и заключались в том, что рекурсивный вызов изменил структуру TWin32FindData, а мы продолжаем им пользоваться далее (скажем в FindNextFile) как будто ничего не произошло.
Руку на отсечение не дам, что Билл не предусмотрел такие заморочки в своих FindXXXX-ах ... Но если и предусмотрел, то никому ничего не сказал. Типа -- я в MSDN про это ничего не нашел.