![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив типа 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]ну а выход за границу массива не проверяешь??