Поиск по маске в VB маленький вопрос

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
limp
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.11.2008 (Вт) 15:50

Поиск по маске в VB маленький вопрос

Сообщение limp » 25.11.2008 (Вт) 15:56

В общем недавно только начал писать на vb и не могу понять как осуществлять поиск файлов по нескольким маскам одновременно
Перерыл кучу инфы по fso и ничего толкового не нашел подскажите плз, если это вообще возможно.
Последний раз редактировалось limp 25.11.2008 (Вт) 16:07, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Поиск по маске в VB

Сообщение alibek » 25.11.2008 (Вт) 16:07

Можно разделять их точной с запятой.
Можно собирать результаты нескольких поисков в одну коллекцию или список.
Можно перебирать все файлы и вручную отбирать те, которые соответствуют критериям отбора.
Если скорость не критична, я бы советовал последнее, это самое гибкое.
Lasciate ogni speranza, voi ch'entrate.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Поиск по маске в VB маленький вопрос

Сообщение SSecurity » 25.11.2008 (Вт) 21:39

можно например так

Код: Выделить всё
Dim Maska as string, Masks() as string
Dim xFile as File
Dim FoundRes as Integer, J as integer, MaskCnt as Integer


Maska = "*st.xls>*st.doc"   ' > - разделитель (можно любой задать .. главное чтоб в имени файла не встричался)
Masks = split(Maska,">")
MaskCnt = Ubound(Masks)  'берем переменную, чтобы каждый раз не запрашивать размерность массива

For each xFile in FSO.GetFolder(...).Files
  FoundRes = 0
  for J = 0 to MaskCnt
    if xFile.Name like Masks(J) then FoundRes = FoundRes + 1
  Next J
  if FoundRes <> 0 then
    'файл подошел хотябы по одной маске \
    'запоминаем файл куда-либо и продолжаем
    'если переменную FoundRes сделать текстовой,
    'то можно в принципе и номера масок задавать для которых файл подошел   
  end if
Next
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

limp
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.11.2008 (Вт) 15:50

Re: Поиск по маске в VB маленький вопрос

Сообщение limp » 25.11.2008 (Вт) 23:45

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

что то недопонял про задание номеров масок. можно поподробнее?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: Поиск по маске в VB маленький вопрос

Сообщение SSecurity » 26.11.2008 (Ср) 0:04

limp писал(а):как можно и так понятно...
хм не обязательно было кусок программы выкладывать меня интересовала "многомасочность" не более, но все равно огромное спасибо=)

что то недопонял про задание номеров масок. можно поподробнее?


это если нужно определить какая из масок подошла - первая, вторая или ещё какая-либо ... просто вместо счета совпавших масок можно дописывать номер маски в массиве, которая совпала

Результат как
Код: Выделить всё
if xFile.Name like Masks(J) then FoundRes = FoundRes + 2^J


при количестве масок до 15 прокатит...
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

limp
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.11.2008 (Вт) 15:50

Re: Поиск по маске в VB маленький вопрос

Сообщение limp » 26.11.2008 (Ср) 0:26

ну до 15 вряд ли дойдет, пока использую 4, а потом видно будет, спасибо за помощь :)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList