Вроде простой вопрос...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Вроде простой вопрос...

Сообщение goro » 15.03.2003 (Сб) 13:04

Привет всем.
У меня такой вопрос. Как сделать чтобы прорамма проверяла выбранну папку (к примеру с:\temp) на наличие Zip файлов и выводила бы список в ListViev.
Заранее всем спасибо.
ПРЕВЕД

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Сообщение Gemini » 15.03.2003 (Сб) 15:11

Просто берёшь обьект file1 и раставляешь параметры:
file1.Pattern=*.zip*
file1.Path=C:\Temp

а потом загоняеш всё что там будет показано в ListViev

Dim i&
For i = 0 To File1.ListCount - 1
ListView1.ListItems.Add File1.List(i)
Next

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 15.03.2003 (Сб) 20:45

А можно ли сделать это без List1? Или без него не обойтись?
ПРЕВЕД

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 16.03.2003 (Вс) 22:55

Люди а может поможете??? :(
ПРЕВЕД

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 16.03.2003 (Вс) 23:24

Похоже, без File1 не обойтись :(
Попробуй поюзать поиск...

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 17.03.2003 (Пн) 0:05

Эх... Придется с File... Просто это немного медленно, а мне каждая секунда в скорости дорога...
ПРЕВЕД

Colonel
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.11.2002 (Пт) 12:39
Откуда: Russia

Сообщение Colonel » 17.03.2003 (Пн) 8:34

goro писал(а):Эх... Придется с File... Просто это немного медленно, а мне каждая секунда в скорости дорога...


Вот тебе пример с использованием класса FSO (FileSystemObject)
загружает файлы в ListBox - для ListView сам переделаешь - ничего трудного

в References сделай ссылку на Microsoft Scripting Runtime
'Загрузка файлов указанной папки в ListBox
Sub loadFolderIntoList(folderPath As String, adList As ListBox, Optional filterExt)
'Очистить список
adList.Clear

'Объявление переменных FileSystemObJect
Dim FSO As FileSystemObject, curFolder As Folder
Set FSO = New FileSystemObject
'Получить все файлы из указанной папки
Set curFolder = FSO.GetFolder(folderPath)

'Загрузить файлы в список
For Each File In curFolder.Files
'Если не указано расширение - загрузить все файлы, иначе только
'отфильтрованные
If IsMissing(filterExt) Then adList.AddItem File Else_
If Right$(File, 3) = filterExt Then adList.AddItem File
Next

'Убить объектные переменные
Set Folder = Nothing
Set FSO = Nothing

End Sub

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.03.2003 (Пн) 11:30

2 Colonel

File это объектная переменная. Так что напрямую ее нельзя пихать в список. Нас конкретно интресует только проперть File.Path или File.Name



Также лучше сжелать полноценную поддержку масок, используя Like вместо Right$.

Colonel
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.11.2002 (Пт) 12:39
Откуда: Russia

Сообщение Colonel » 17.03.2003 (Пн) 12:04

RayShade писал(а):2 Colonel
File это объектная переменная. Так что напрямую ее нельзя пихать в список. Нас конкретно интресует только проперть File.Path или File.Name

Также лучше сжелать полноценную поддержку масок, используя Like вместо Right$.


Да без вопросов - я просто на скорую руку писал :D
В принципе у меня и сам объект File без проблем пихается в листбокс - хотя конечно корректней делать с использованием свойств.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.03.2003 (Пн) 12:10

Ну просто у File есть дефолтная проперть, и она напрямую вызывается при обращении просто к объекту. Но это будет иметь немного меньшую производительность просто :)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 17.03.2003 (Пн) 14:17

a =Dir("c:\tmp\*.zip")
combobox1.clear
while a <>""
'если еще надо имя отделить от пути то:
Name =""
for i=len(a) to 1 step-1
if mid(a,i,1)="\" then exit for
name = mid(a,i,1)+name
next i

combobox1.additem a
a=dir
wend
Последний раз редактировалось Vitaly1 18.03.2003 (Вт) 14:20, всего редактировалось 2 раз(а).

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 17.03.2003 (Пн) 21:45

2 Colonel
Tnx а ты можешь скаать как сделать чтобы выводилися только имена файлов без путей кнему?
ПРЕВЕД

Colonel
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.11.2002 (Пт) 12:39
Откуда: Russia

Сообщение Colonel » 18.03.2003 (Вт) 6:38

goro писал(а):2 Colonel
Tnx а ты можешь скаать как сделать чтобы выводилися только имена файлов без путей кнему?

По моему в предыдущих постах я и RayShade эту тему затронули
:lol:
Пишешь - File.Name явно. Объект файл по умолчанию передает свойство File.Path.

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 18.03.2003 (Вт) 8:49

ОЙ! Точно! Я прогнал... Спасибо!
ПРЕВЕД

Ilya Vasilyev
Постоялец
Постоялец
 
Сообщения: 820
Зарегистрирован: 06.08.2002 (Вт) 5:36
Откуда: Russia, Omsk

Сообщение Ilya Vasilyev » 18.03.2003 (Вт) 9:58

Offtopic

goro писал(а):Welcome to route 666


goro, поменяй подпись, плиз...
Изображение
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 18.03.2003 (Вт) 11:22

Правильно, надо менять.

Кстати, можно пути в ручную удалять. Вот тебе и имена.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 18.03.2003 (Вт) 14:23

а так, что плохо?

a =Dir("c:\tmp\*.zip")
combobox1.clear
while a <>""
'имя отделяем от пути:
Name =""
for i=len(a) to 1 step-1
if mid(a,i,1)="\" then exit for
name = mid(a,i,1)+name
next i
combobox1.additem Name
a=dir
wend

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.03.2003 (Вт) 14:33

Да нет, в принципе, такой способ довольно прост, так как не требует подключения никаких дополнительных библиотек и пр.



Но он весьма ограничен по возможностям - если понадобится выводить то либо кроме имен файлов то тут он уже не пойдет. Так что если в будущем надо будет прикрутить какую нибудь еще функциональность, то лучше использовать FSO.

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 19.03.2003 (Ср) 19:52

что-нибудь это что? если размер/время и т.д. - что, только FSO способен эту инфу извлеч?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь! все-таки Vitaly1'н метод лучше, я и сам только этим пользуюсь
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 19.03.2003 (Ср) 23:14

Да, только FSO.

Или API, но API сложнее в применении. Кто чем пользуется - вопрос предпочтнеий и решаемой задачи, как я уже выше говорил.[/quote]

Colonel
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.11.2002 (Пт) 12:39
Откуда: Russia

Сообщение Colonel » 20.03.2003 (Чт) 7:22

Да, вроде из простого вопроса обсуждение вылилось аж на 2 страницы! :)
Действительно, как уже говорилось - это вопрос конкретной задачи и предпочтений.
Вот я допустим чаще пользуюсь своей функцией проверки на существование файла (классический пример с использованием Len>0) вместо функции FSO, но в случае необходимости использую и FSO.
Мое ИМХО - программировать в классах более логично и продумано.
А вообще, это же замечательно, что существует несколько альтернатив для решения конкретной задачи - а выбор уже за нами.
:)

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 20.03.2003 (Чт) 17:04

Всем спасибо за примеры :)
Последний раз редактировалось goro 20.03.2003 (Чт) 17:06, всего редактировалось 1 раз.
ПРЕВЕД

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 20.03.2003 (Чт) 17:05

Ладно раз Gaidar сказал поменять подпись, то конечн поменяю... :evil:
ПРЕВЕД

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 20.03.2003 (Чт) 20:32

GetAttr ( path ) - атрибут файла
SetAttr ( path ) - установить атрибут
FileDateTime ( path ) - время
FileLen ( path ) - размер файла в байтиках

^ ^ ^
|-----|-------|-------- вроде не API и не FSO. Интересно, что же это может быть тогда :roll:
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 21.03.2003 (Пт) 10:53

Хм.. Похоже это встроенные функции Бейсика :)

Интересно, откуда они там взялись? :roll:

Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Ответ

Сообщение Alfa » 21.03.2003 (Пт) 17:05

А не легче для решения вопроса использовать API?

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 21.03.2003 (Пт) 19:40

RayShade писал(а):Хм.. Похоже это встроенные функции Бейсика :)
Интересно, откуда они там взялись? :roll:


опять же пресловутая литература Microsoft Press - я же говорил, что там ОЧЕНЬ много фсяких мелочей :D :D :D
Изображение

Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Ответ

Сообщение Alfa » 21.03.2003 (Пт) 19:57

Это где? Ссылку скажи..

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 21.03.2003 (Пт) 20:13

где?..., Microsoft Press ??? :) Так это книжка по VB издательства Micr.Press :)
http://search.rambler.ru/click?i=328545 ... b/bhv7.htm
- вот все, чем могу помочь :)
Изображение

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 21.03.2003 (Пт) 21:51

ну и я чё-нить скажу :twisted:
сущесвуют и примеры поиска файлов...
http://planet-source-code.com/vb/script ... phabetical

модет чё пригодится 8)
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot], Yandex-бот и гости: 43

    TopList