Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив типа Variant [D7, XP]


Gerasym ©   (2006-07-03 16:31:00) 

В процессе написания софтинки столкнулся с ошибкой:
'Variant or safe array index out of bounds'
(выбивает в самом начале цикла по сравнению 2х массивов)
Уважаемы знатоки подскажите пожалуйста - какие существуют на него ограничения?
Массив на ~900 значений сравнивается с массивом на ~11000 значений.
Может есть ограничение на длинну массива?


Gerasym   (2006-07-03 18:31:00) [1]

Все :) нашел в чем дело...
Массив я неправильно создавал
ArrayData2:= VarArrayCreate([1,Rows2], varVariant); неправильный
ArrayData2:= VarArrayCreate([1,Rows2,1,1], varVariant); правильный
ура товарищи :)
Всем кто помогал спасибо :)


Gerasym   (2006-07-03 17:55:00) [2]

Массив инициализирован и заполнен данными
У SafeArray нету ограничений на длинну?


tesseract   (2006-07-03 17:50:00) [3]


> Что значит Safe Array Index? Безопасный индекс массива?


SafeArray - такое ole-шный тип данных.

> Посмотрел :) как только происходит инициализация цикла -
>  сразу эта ошибка

А массив инициализирован?


Gerasym   (2006-07-03 17:49:00) [4]

Я же написал что посмотрел


Германн   (2006-07-03 17:48:00) [5]


> в зависимости от того с чего начну цикл... если с 0 то 0,
>  если 1 - то соответственно 1 :)


Это ты увидел под отладчиком или предполагаешь?


Gerasym   (2006-07-03 17:41:00) [6]

в зависимости от того с чего начну цикл... если с 0 то 0, если 1 - то соответственно 1 :)


Германн   (2006-07-03 17:34:00) [7]


> Посмотрел :) как только происходит инициализация цикла -
>  сразу эта ошибка


И чему в этот момент равна переменная цикла?


Gerasym   (2006-07-03 17:32:00) [8]

Посмотрел :) как только происходит инициализация цикла - сразу эта ошибка


Германн   (2006-07-03 17:31:00) [9]


> Да и вылет в происходит в самом начале цикла, следовательно
> я в начале массива и нахожусь


Не очевидно. Посмотри под отладчиком.


Gerasym   (2006-07-03 17:27:00) [10]

Что значит Safe Array Index? Безопасный индекс массива?


Gerasym   (2006-07-03 17:24:00) [11]

Дык в начале цикла то выбивает :)))


Германн   (2006-07-03 17:22:00) [12]


> что с 0 цикл начинать что с 1 - результат тот же :


А заканчивать rows или rows-1 есть разница? :-)


Gerasym   (2006-07-03 17:14:00) [13]

что с 0 цикл начинать что с 1 - результат тот же :(


Ega23   (2006-07-03 17:12:00) [14]

Индесация не с нуля ли начинается?


Gerasym   (2006-07-03 17:00:00) [15]

Опишу подробнее
Имеется 2 массива
ArrayData := VarArrayCreate([1,Rows,1,2], varVariant);
ArrayData2:= VarArrayCreate([1,Rows2], varVariant);
Rows - кол-во использованных строк в Книге Эксель
Первый массив из одного файла, второй - из другого заполняется диапазоном значений. Потом начинается цикл сравнения значений первого массива и второго.
for i:=1 to rows do
for j:=1 to rows2 do
if ArrayData[i,1]=ArrayData2[j] then ArrayData2[j]:=0

В самом начале цикла вылетаю с ошибкой :(


Gerasym   (2006-07-03 16:47:00) [16]

А как? Да и вылет в происходит в самом начале цикла, следовательно я в начале массива и нахожусь


icWasya   (2006-07-03 16:40:00) [17]

ну а выход за границу массива не проверяешь??


Наверх

Титульная страница Поиск, карта сайта Написать письмо