Где я перемудрил или не домудрил

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

Где я перемудрил или не домудрил

Сообщение David » 31.03.2006 (Пт) 14:38

в VB6
Код: Выделить всё
        Dim a(5) As String
       
        a(0) = "aaa"
        a(1) = "bbb"
        a(2) = "ccc"
        a(3) = "ddd"
        a(4) = "eee"
        a(5) = "fff"
       
        Debug.print Filter(a, "04051960")


выдаёт ошибку 13

Спасибо

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.03.2006 (Пт) 14:50

как у тебя объявлена ф-я Filter :?:

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 31.03.2006 (Пт) 14:51

Код: Выделить всё
Dim a(5) As String, b() As String
       
        a(0) = "aaa"
        a(1) = "bbb"
        a(2) = "ccc"
        a(3) = "ddd"
        a(4) = "eee"
        a(5) = "fff"
       
      b = Filter(a, "f")
     
      For i = LBound(b) To UBound(b)
      Debug.Print b(i)
      Next i
Если всё делать своими ручками, они скоро отвалятся !

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 31.03.2006 (Пт) 14:51

Konst_One
Это встроенная функция ВБ :)
Если всё делать своими ручками, они скоро отвалятся !

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 31.03.2006 (Пт) 14:53

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

Код: Выделить всё
Debug.print Filter(a, "04051960")(0)



Этот код выдаст ошибку, если совпадений не найдено, т. е. надо еще проверить, что в возвращаемом массиве есть соответствующий элемент.
Быть... или не быть. Вот. В чём вопрос?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.03.2006 (Пт) 14:59

Kovu
я это знаю, но из приведенного кода - это совсем не очевидно :!:

Код: Выделить всё
Friend Function Filter(ByVal Value As String, ByVal Search As String) As String

End Function

вот тебе пример

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 01.04.2006 (Сб) 16:32

David
У тебя
Option Base (1) или (0). Если 0 тогда всё понятно!
Если с 0 тогда масив будет запонять до 4, а на 5 ошибка!

Если (1) тогда :?:

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 01.04.2006 (Сб) 20:30

neic
Если бы было то что ты описал выдавалась бы ошибка 9(SubScript out of range) :wink:
Если всё делать своими ручками, они скоро отвалятся !


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

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

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

    TopList  
cron