![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
XPurple |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Как вывести список директорий с вложениями ?
--------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Гм... вывести куда? чем тебе стандартный DirListBox не покатил?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
XPurple |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
В текстовый файл в виде FileTree
--------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Как вариант. Тебе нужна рекурсивная функция, которая перебирает всё, что лежит в папке (начиная, допустим, с диска С). Встретив файл, функция добавляет его в список (или выводит куда-то), а встретив папку - не только добавляет ее в список, но и вызывает себя же для перебора содержимого найденной папки.
Примерно так:
Сейчас пишу без VB, так что ошибки могут быть ![]() А из основной проги вызываешь эту процедуру для самой верхней папки, которую тебе надо рассмотреть: типа search "c:\windows" Это сообщение отредактировал(а) Тутанхамец - 17.5.2006, 08:45 |
|||
|
||||
XPurple |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Спасибо. Идея ясна.
Вот что получилось в итоге
Это сообщение отредактировал(а) XPurple - 17.5.2006, 10:23 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
XPurple |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Как несколько одинаковых символов сгруппировать, например chr(151)? А то, на мой взгляд, длинная строчка получилась. Некрасиво как-то.
Не так давно в этой теме спрашивал: каким методом можно проверить, существует ли директория. Думал, по аналогии с методом FileExists он называется DirectoryExists. Оказалось, что это метод FolderExists. p.s. Мне с помощью объектов FSO очень понравилось программировать. Кстати, абсолютно несложно. Гораздо легче, чем варьируя комбинациями функций open, close, dir и пр. К тому же, у функции Dir - оказался ,я даже не знаю как правильно сказать, неверное определение статуса зашаренной корневой папки. Dir("\\share\resurs",vbDirectory) выдавал, у меня во всяком случае, 52 Run-time error "Bad file name or number" p.p.s Название сайта Vingrad - что означает ? Какой-то молдавский город ? Это сообщение отредактировал(а) XPurple - 17.5.2006, 11:13 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
Тутанхамец |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Во-первых, юзай константы в таких случаях. например встроенная константа vbCrLf - это перевод строки, то есть chr(13)+chr(10). Во-вторых - функция string.
По поводу FSO - согласен, вещь неплохая ![]() Насчет vingrad - не знаю. У меня ассоциируется с WinGrad и "виноградом, который зелен". ![]() Добавлено @ 12:27 По поводу твоей проги - не совсем понятно зачем объект передавать в параметрах функции как ByVal... |
||||
|
|||||
XPurple |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Для рекурсивного вызова функции, если в папке есть подпапки. Новый объект-это subfolder, который найден в методе Subfolders для текущей папки
То, что нужно. Не пеняйте меня, я ведь еще только учусь. Это сообщение отредактировал(а) XPurple - 17.5.2006, 13:13 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
||||
|
|||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Пока тебя, вроде, никто и не пнул
![]()
Зачем передавать объект byVal? То есть по значению. Почему не ByRef? Во-первых я не уверен, что Visual Basic вообще передаст объект по значению (то есть как копию объекта в стеке). Возможно, для объектов ByVal и ByRef идентичны. Но тут я не уверен. Может и передаст - это-то мне и не нравится. Если он все-таки передаст по значению (как копию), зачем тебе нужно занимать место в стеке копиями объектов? Да еще во время рекурсивного вызова функции, когда стек и так активно используется. Используй ByRef, передавай ссылку на объект. Кроме того, лучше указывать тип параметра не as object, а конкретно - as Scripting.Folder. Ты ведь не собираешься передавать объекты разных типов. |
|||
|
||||
IvanB |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 23.5.2005 Где: Irkutsk Репутация: нет Всего: 5 |
А есть ли в объектоном виде замена такой конструкции:
Т.е. вопрос такой :"Можно ли через объекты работать с файлами параллельного (случайного) доступа?". --------------------
Закон отладки: Каждая последняя ошибка является предпоследней. |
|||
|
||||
cardinal |
|
||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
В FAQ'е эта функция есть. XPurple, делай сдвиги в коде, чтобы его было легче читать Например не
а
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||
|
|||||||
XPurple |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Исправлю.
Почему то у меня ругается на такой тип объектов. Обработчик выдает сообщение, что "user-defined type not defined" и ,кстати, обьявления объектов в таком виде "Dim fso As New FileSystemObject" тоже не объявляются по той же причине. Как это исправить ? Хорошо. --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
||||
|
|||||
Тутанхамец |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Зайди в меню "Проект" -> "Информации" (Project -> References) и поставь галочку напротив "Microsoft Scripting Runtime". Это список библиотек типов. Помеченные галочкой подключаются к твоему проекту и интепретатор их может различать. Чтобы посмотреть, какие типы данных уже, подключены нажми F2 или меню "Вид" -> Object Browser. Этот browser бывает полезен, когда надоп осмотреть, какие методы и свойства есть у какого-нибудь класса. Добавлено @ 08:12
Фигово, но, кажется, нет. По крайней мере так было сказано в бумажном руководстве по VB 6.0 от Microsoft Press. Еще там, правда, было сказано, что ситуация, возможно, изменится с новой версией FSO. |
||||
|
|||||
XPurple |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Как запустить программу как фоновую? Если просто написать End в точке выхода, то при загрузке программы высвечивается значок мышки в виде песочных часов.
У меня русифицированная версия, так еле-еле нашел, что References=Ссылки Это сообщение отредактировал(а) XPurple - 18.5.2006, 14:16 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
А у меня она русифицирована так галимо, что слово "Информации..." всего лишь один из перлов...
Что значит запустить фоново? Если "фоновая программа" - это та, которую не видно, но которая работает, то простейший способ - в свойствах загружаемой формы установить visible в false. В принципе, можно мутить без форм что-то вроде:
Но в большинстве случаев это будет неудобно. Я так не делал никогда. По-моему, бейсик не для такого. P.S. Здесь вроде правило "Один вопрос - одна тема". Так действительно удобнее. Раз отошли от "Работы с файлом", то при следующих проблемах создавай новую тему. ![]() Это сообщение отредактировал(а) Тутанхамец - 18.5.2006, 17:22 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |