2014-03-18 2 views
0

у меня есть тестовый код в VB:Индекс находился вне границ массива Струнный

Dim st As New ScheduledTasks("\\webserver") 
Dim tasknames() As String = st.GetTaskNames 
ListBox1.Items.Add(tasknames(1)) 

st.Dispose() 

Когда я запускаю его я получаю сообщение об ошибке в строке:

ListBox1.Items.Add(tasknames(1)) 

Индекс находился вне границы массива.

Есть ли у кого-нибудь предложения, что я делаю неправильно?

+1

Вы предполагаете в 'GetTaskNames' возвращает 2 или более значений , и это предположение неверно? Помимо этого, мы не можем сказать, потому что мы понятия не имеем, что вы пытаетесь сделать. –

+0

Скорее всего, все, что вы пытаетесь сделать, не новаторское, поэтому напишите больше кода и покажите нам предметы для st.GetTaskNames – Trent

ответ

0

tasknames должно содержать как минимум 2 элементов для того, чтобы код работал. (Обратите внимание, что массивы 0 на основе, так что вы начинаете отсчет с 0)

Вы должны проверить, действительно ли он содержит такое количество:

If tasknames.Length >= 2 
Then 
    ListBox1.Items.Add(tasknames(1)) 
End If 
+0

Это сделало трюк. Я обновил его, чтобы исключить последующее исключение. Если tasknames.Length> = 2 Тогда Для я = 1 Для tasknames.Length - 1 ListBox1.Items.Add (tasknames (я)) Следующая End If – user3360710

+1

@ user3360710 - с 'For' цикла, вы все еще не хватает одного элемента - как сказал Патрик, массивы основаны на 0. Первый элемент массива равен 0, но ваш цикл 'For' начинается с 1. –

+0

@Damien_The_Unbeliever: Спасибо, что снова указали это. Я думаю, что большинство людей, которые начинают программировать, не знают об этом. –

Смежные вопросы