|
|
#1
|
|||
|
|||
Ошибка
Привет, ребята. Есть такая странная ошибка list index out of bounds, как исправить ее? Имеется программа, вкратце:
Код:
if checklistbox[i].checked or ... then Form2.Memo1.Lines.Add('1111'); Спасибо, жду советов. |
#2
|
||||
|
||||
Это выход из диапазона значений, т.е. идёт обращение к не существующему объекту списка. Решается заданием соответствующих условий циклу, напр.
Код:
... for i := 0 to obj.Count - 1 do ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
ну, у меня циклом никак не получится, потому что не для каждого i нужно выполнять действие.
при чем ошибка вылетает не всегда, а после некторого if-then. |
#4
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
ок. указываю. проблема-то и в том, что, короче, вот:
Код:
begin if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Генераторы шумовых сигналов'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Низкочастотные генераторы сигналов'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Усилители мощности'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Акустические излучатели'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Измерители шума и вибраций (шумомеры)'); if CheckListBox1.checked[0] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox3.checked[0] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Селективные микровольтметры, измерительные приемники (анализаторы спектра)'); if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[3] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Селективные нановольтметры'); if CheckListBox1.checked[2] or CheckListBox1.checked[2] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Измерительные микрофоны'); if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[0] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Измерительные антенны'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] then Form2.Memo1.Lines.Add('Вибродатчики (акселерометры)'); if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[0] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Измерительные пробники'); if CheckListBox1.checked[2] or CheckListBox1.checked[3] or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2] or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Полосовые октавные фильтры со среднегеометри- ческими частотами 250, 500, 1000, 2000, 4000 Гц'); if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox3.checked[0] or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2] then Form2.Memo1.Lines.Add('Осциллографы'); { if Checklistbox6.Checked[0] or CheckListBox3.checked[0] or CheckListBox4.checked[0] then Form2.Memo1.Lines.Add('Программные средства формирования и контроля полномочий доступа в AC'); } if CheckListBox2.checked[3] or CheckListBox2.checked[4]or CheckListBox2.checked[5] or CheckListBox3.checked[0] or CheckListBox4.checked[0] then Form2.Memo1.Lines.Add('Программные средства контроля целостности программ и программных комплексов'); вот до выделенного места все работает, а потом при добавлении еще одного условия, не хочет. Извините, за громоздкий код. для наглядности |
#6
|
|||
|
|||
может есть ограничение, типа не больше 10 if на одну битбатон?))
|
#7
|
||||
|
||||
Сейчас попробую оптимизировать
Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 11.05.2014 в 17:07. |
#8
|
|||
|
|||
А поставить точку останова в 65 строке приведенных исходников и посмотреть, чему равны Checklistbox4.Items.Count и Checklistbox6.Items.Count?
|