Снова FileSystemObject

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ефрейтор
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 11.02.2005 (Пт) 12:43
Откуда: Алтай

Снова FileSystemObject

Сообщение Ефрейтор » 31.08.2005 (Ср) 4:14

Возникла потребность счиать все имена файлов из конкретного каталога. Почитал темы форума и понял, что самый простой способ через FileSystemObject. Написал процедуру, но она выдаёт ошибку с которой не могу разобраться. Там даже запутаться негде, но процедура не работает. В строке

NameFile = MyFolder.Files(i).Name

выдаёт: Invalid Procedure call or argument
Странно всё это, для такого простого в понимании объекта....
Помогите люди добрые.


Private Sub Form_Load()
Dim FSys As New FileSystemObject
Dim MyFolder As Folder
Dim NameFile As String
Dim i As Integer

Set FSys = CreateObject("Scripting.FileSystemObject")
Set MyFolder = FSys.GetFolder("C:\")

For i = 1 To MyFolder.Files.Count
NameFile = MyFolder.Files(i).Name
Debug.Print NameFile
Next
End Sub


Пробовал использовать команду Dir, но она считывает файл только с конкретными атрибутами, а мне нужно считать каждый файл и сиситемный и скрытый и т.д.[/syntax]

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 31.08.2005 (Ср) 16:32

Попробуй так:

Код: Выделить всё
Private Sub Form_Load()
  Dim FSys As New FileSystemObject
  Dim MyFolder As Folder
  Dim MyFile as File
  Dim NameFile As String

  Set MyFolder = FSys.GetFolder("C:\")

  For Each MyFile In MyFolder.Files
     NameFile = MyFile.Name
     Debug.Print NameFile
  Next
End Sub


;)
То, что для одних константа, для других только переменная...

Ефрейтор
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 11.02.2005 (Пт) 12:43
Откуда: Алтай

Сообщение Ефрейтор » 01.09.2005 (Чт) 3:59

Odrick
Попробовал....хмм.. действительно работает....
Только не пойму в чём разница между твоей и моей организацией цикла....по логике вроде тоже самое...до этого случия организация цикла как в моём коде никогда не подводила, всегда нормально работала с коллекциями, конечно визуально она не так изящна чем твой код, но разницы не вижу ни какой. Или что я не понимаю? Может кто чиркнит пару слов на тему разницы в данном примере?

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 01.09.2005 (Чт) 13:55

Разница на самом деле есть и существенная. Если почитать внимательно описание объектной модели FileSystemObject, то можно увидеть, что коллекция Files не имеет числовых индексов. Таким образом, "достучаться" к элементам коллекции по номеру невозможно. В общем, MSDN рулит ;)
То, что для одних константа, для других только переменная...

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 01.09.2005 (Чт) 15:48

FSO help на русском

Ефрейтор
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 11.02.2005 (Пт) 12:43
Откуда: Алтай

Сообщение Ефрейтор » 02.09.2005 (Пт) 4:09

Odrick
X-BOND
Спасибо люди добрые, сам бы я наверно ни когда не до пёр


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 90

    TopList  
cron