Проблема Ошибка Out of Range

Darksoul

Новичок
Здравствуйте, уважаемые жители этого форума! Создаю установщик на ботве (естественно не сам, руки пока только выпрямляю, изучая чужой код и добавляя в него небольшие правки из готовых решений), и вот столкнулся с проблемой, что при переходе на непосредственно страницу установки файлов появляется ошибка "Out of Range", ранее с подобной проблемой не сталкивался, как решить не знаю, помогите хоть советом. Заранее спасибо за любую помощь.
 

nik1967

Old Men
Проверенный
Darksoul, "Ошибка out of range, означает выход за пределы, эта ошибка связана с выходом за пределы массива или множества."
Без скрипта (со всеми файлами, что бы не искать их) тебе никто не сможет помочь.
 

Darksoul

Новичок
Darksoul, "Ошибка out of range, означает выход за пределы, эта ошибка связана с выходом за пределы массива или множества."
Без скрипта (со всеми файлами, что бы не искать их) тебе никто не сможет помочь.
По личным причинам, не могу распотраняться скриптами в открытом виде, какие в таком случае могут быть варианты? Просто ошибка орёт на строку 141 в скрипте, но дело в том, что у меня код не в одном скрипте, а в нескольких отдельных модулях. И я не знаю пока что, как определить где именно эта строка. в общем коде.
 

Nemko

Дилетант
Модератор
Darksoul, как Вам объяснить коротко, а главное понятно и по русски:
  1. В модуле 07_Components.iss не правильно прописываете имя объектов. Например: 'MEIN_GOTT': Result:=clbIsItemCheckedByName(List[0], 'RadioButtonA3'), объекта с именем RadioButtonA3 не существует. Пропишите правильно имена.
  2. В модуле 09_Log.iss, такая же проблема Например:if clbIsItemCheckedByName(List[0], 'RadioButtonA3') then LogString:=LogString + #13#10 + ' Mary Grand', объекта с именем RadioButtonA3 не существует.
А на вопрос, почему выходит ошибка Out of Range, отвечу что модуль CheckBoxList от South работает приблизительно так, с помощью функции простые объекты CheckBox записываются в заранее прописанный тип данных массивного типа, как то так. Проще говоря при неправильном обращении к массиву CheckBoxList'a мы выходим за рамки него (-1), как то так. Возможно поправить в теории функцию lbIsItemCheckedByName в модуле 02_CheckListBox.iss, добавив условие при не нахождении по имени, что то типа(не проверял, но в теории ошибки должны пропускаться и компонент не установится, но лучше прописывать имена объектов правильно):
Код:
function clbIsItemCheckedByName(clbind:integer; Name:AnsiString):boolean;
var
  ii:integer;
begin
  ii:=clbFindItemByName(clbind,Name);
  if ii <> -1 then Result:=CheckBoxGetChecked(ACLB[clbind].ItemList[ii].Handle) else Result:=False;
end;
P.S.: "Лол кек чебурек", не знаю кто дал Вам код, но для кого я его писал просил не выкладывать, а Вы успешно выложили самую главную секцию Description.iss, "мои полномочия на это всё". Genius...
 
Последнее редактирование:

Darksoul

Новичок
P.S.: "Лол кек чебурек", не знаю кто дал Вам код, но для кого я его писал просил не выкладывать, а Вы успешно выложили самую главную секцию Description.iss, "мои полномочия на это всё". Genius...[/QUOTE]
Сорян, тупанул, быстренько уже удалил.
 
Сверху