![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Следующий код:
На что мне идет ругань "VARIANT ARRAY INDEX OUT OF BOUNDS". Не могу понять в чем дело - величина MaxI раняется 1600. Помогите!!! |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
в какой строчке ругань? индексация у массивов начинается с нуля. |
|||
|
||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
2 zim22:
Ругань в строке
Как я думаю, число элементов массива Ent_Massiv и диапазона Range должно быть одинаковым - по 1600. Так и есть. Ничего в голову не лезет((( |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
ещё раз: к 1600 элементов ты можешь обратиться по индексам 0...1599
на последней итерации цикла переменная i будет равна 1599. значит GetElement(i+1) будет обращаться к 1600 элементу, которого не существует. |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Зачем в 13й строке создается массив, который тут же (в 16й строке) перезаписывается (при этом оригинальный массив теряется)?
Почему в 20й строке идет перебор до 1600, а не до размера массива, который тем не менее прочли в предыдущей строке (в переменную MaxI) ? |
|||
|
||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Не получается.
Ошибка возникает при i=0. Возникает, даже если перебор вести до 2.
Даже если сделать так, вылетает "VARIANT ARRAY INDEX OUT OF BOUNDS". Ума не приложу , что за хрень |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Может он вообще не массив возвращает? А например коллекцию.
Посмотри в отладчике, что лежит в DataArray, сдается мне, что там VT_DISPATCH |
|||
|
||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
2 XVR:
А что именно смотреть - Debug показывает там кучу полей. я их не понимаю, увы. Но вроде как при
некоторым полям присваивается адрес какой-то ячейки. |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Поле vt. Там должно быть VT_SAFEARRAY (число 27)
|
||||||
|
|||||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Инспектор в поле vt показывает 8204. Это происходит в момент
До этого в поле был 0. Не понимаю, что это значит. |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Это значит VT_ARRAY|VT_VARIANT, т.е. массив вариантов. VarArrayCreate создает SafeArray и прописывает его в VARIANT как простой массив, а не как SafeArray
Интересно, что там будет после DataArray=Range.OlePropertyGet("Value"); |
||||||
|
|||||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Тоже самое - инспектор показывает 8204. Можете подсказать, как это исправить |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Тогда должно работать Чему равен MaxI? |
||||
|
|||||
| greykardinal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
MaxI равняется 1600.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Увы, тогда только вооружаться дебагером и нырять во внутренности GetElement |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |