Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как узнать до какого индекса заполнен массив? Добавлено: 04.04.04 05:17  

Автор вопроса:  Paranoik87 | Web-сайт: www.iwanow.front.ru | ICQ: 249957963 

 dim strText as String
 strText=me.inputTexBox.text
 
 
 'есть массив:
 dim dblmyArray(100) as double

 'зпаолняю
 for i = 0 to len(strText) 'len(strText)-Динамическое число.
 dblmyArray(i)=GetChar(strText,i)
 Next i
  
 'вывожу
 for i1 = 0 to ????  'как узнать до какого ниндекса заполнен массив?
 'len(strtext)- здесь его невозможно ипользовать, потаму как я выкидываю из
 'него часть информации и если я его ставлю(len(strtext)), то происходит:
 'выход индекса массива за пределы его величены.

 outtextbox.text=dblmyArray(i)
 Next i1
 
 iwanow@front.ru
 
 

Ответить

  Ответы Всего ответов: 29  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 04.04.04 06:12

Функция есть такая, UBound называется:

Dim myArray(1 To 100, 0 To 3, -3 To 4)
Dim retval
retval=UBound(myArray,1) 'возвращает 100
retval=UBound(myArray,2) 'возвращает 3
retval=UBound(myArray,3) 'возвращает 4

Ответить

Номер ответа: 2
Автор ответа:
 Paranoik87



ICQ: 249957963 

Вопросов: 5
Ответов: 5
 Web-сайт: www.iwanow.front.ru
 Профиль | | #2
Добавлено: 05.04.04 04:58
Спасибо тебе cresta!

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 05.04.04 09:25

Функция то есть, только непонятно что в ней толку в данной ситуации. Либо я не понял вопроса.

У тебя массив статический - 100 элементов. Ubound всегда будет выдавать 100. А уж сколько ты заполнил ненулевыми значениями - об этом она ведать не может.

Тут надо либо запоминать, либо проводить проверку циклом.

Либо используй динамический массив с Preserve.

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 05.04.04 09:41
То LamerOnLine : Раз происходит ошибка index out of boud, значит не 100 элементов, а меньше, возможно человек делает redim, но не описал этого в своем вопросе.

Ответить

Номер ответа: 5
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 05.04.04 11:35

To cresta: Раз человек делает dim dblmyArray(100) as double, то извини, он уж никак не может делать Redim.

index out of bound может и возникать при обращении, скажем, к 101-му элементу, или к 0-му, если Option Base 1, или вообще к отрицательному.

Ответить

Номер ответа: 6
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #6
Добавлено: 05.04.04 15:15

>как узнать до какого ниндекса заполнен массив?

Сам же написал /dim dblmyArray(100) as double/ он до ста и заполнен нулями.

>len(strtext)- здесь его невозможно ипользовать,

>потаму как я выкидываю из него часть информации

Так запомни его до цикла (а то сразу - выкидывать...)

Ответить

Номер ответа: 7
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #7 Добавлено: 05.04.04 15:30

Судя по тому, что:  

происходит:
 'выход индекса массива за пределы его величены.

 программа выехала за пределы массива. Как она туда попала - неизвестно, кода не видно, возможно, был не Dim, как здесь описано, а Redim в цикле заполнения массива. Иначе зачем пытаться считывать 101-й элемент, зная, что их всего 100? Это граничит с глупостью. Предполагая, что человек не глуп настолько, также можно предположить, что был всё-таки Redim, и ошибка происходила при индексах, меньших чем 101

Ответить

Номер ответа: 8
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 05.04.04 16:30

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

Если уж сказано - dim dblmyArray(100) as double, то никаких Redim тут подразумаеваться не может.

Кроме того - этот цикл никак не привязан к длине массива. То есть, если длина строки больше 100 символов - ошибка возникнет автоматически.

Вариант второй - Option Base 1. В таком случае ошибка возникает в начале цикла.

Было бы проще если бы человек сказал чего он хочет добиться в итоге. Было бы проще что-либо решить.

Ответить

Номер ответа: 9
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #9 Добавлено: 05.04.04 20:58
Судя по всему, человек заполучил свою ф-цию Ubound  и решил с её помощью проблему, раз больше не заглядывает в свой топик. А мы тут с тобой жуем этот массив

Ответить

Номер ответа: 10
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #10
Добавлено: 05.04.04 21:48

cresta

Зачем ему этот UBOUND если он его и так знает (len(strText))?

Ответить

Номер ответа: 11
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #11 Добавлено: 05.04.04 23:49

Ну раз спрашивает, наверное не знает, или возможно почему-то не равен он len(strText)

Ответить

Номер ответа: 12
Автор ответа:
 Paranoik87



ICQ: 249957963 

Вопросов: 5
Ответов: 5
 Web-сайт: www.iwanow.front.ru
 Профиль | | #12
Добавлено: 06.04.04 04:34

Спасибо за ответы Cresta! Всё получилось.

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 06.04.04 09:31

Ну все, тогда я в осадке. Пойду полежу в кустах...

Ответить

Номер ответа: 14
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #14 Добавлено: 06.04.04 16:29

To LamerOnLine: Слушай, а там в кустах место ещё есть? Может и мне тоже пригодится, вот сделает тебе Chill прозрачный текстбокс, и я тоже в кусты...

Ответить

Номер ответа: 15
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #15 Добавлено: 06.04.04 16:44

14 ответов на такой вопрос... браво:)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам