![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно быстрее найти элемент с ошибкой List index out of b [D7, WinXP]
KBO78 © (2015-03-09 15:05:00)Доброе всем время суток.
У меня появилась ошибка «List index out of bounds (-1)», я знаю она появляется тогда, когда обращаясь к определенному элементу, выходишь за рамки списка. В моем случае, ошибка происходит, когда я явно не дергаю явный элемент, но все же какой-то дергается.
Ошибка вылетает на
begin
showmessage('k3’);
ibdsWord.Close; //error
showmessage('k4 go');
ibdsWord.SelectSQL.Clear;
ibdsWord.SelectSQL.Add(ARequire);
ibdsWord.FetchAll;
ibdsWord.Open;
ibdsWord.First;
end;
закрытии Dataset.
Причем странно то, что весь блок выполняется (без ошибки) в режиме «step over». Где тут собака зарыта?
Заранее спасибо
KBO78 (2015-03-11 13:54:00) [1]После "Begin"
"вырубил" отображение изменений всем конкретным компонентам, методом
ibdsWord.DisableControls;
а перед "end" - включил - "ibdsWord.EnableControls;"
Dennis I. Komarov (2015-03-10 17:45:00) [2]Выкинуть все DB GUI компоненты и будет счастье
KBO78 (2015-03-10 16:03:00) [3]Rouse_
спасибо, посмотрю
Rouse_ (2015-03-10 15:02:00) [4]Если под отладчиком, то иди в модуль SysUtils, и становись бряком на вот таком коде:
procedure Exception.RaisingException(P: PExceptionRecord);
begin
SetInnerException; // <<< вот тут ставь бряк
как поднимется исключение, смотри CallStack, в котором и будет показано что происходило перед генерацией исключения.
sniknik (2015-03-10 12:35:00) [5]> Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал
хорошо, а как надо правильно открывать окно чтобы не взрывалось ... ?
"утечку" устрани. блин... хочется написать то что в [15]/[17] похоже было написано.
Плохиш (2015-03-10 12:35:00) [6]
> Хорошо, а как надо
проверять наличие элементов, ну или нанять программиста.
PS. кстати, здесь не любят партизан, не показывающих сразу необходимый код.
KBO78 (2015-03-10 12:24:00) [7]Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал
«List index out of bounds (-1)»
в конкретном месте? (во время переоткрытия dataset)
KBO78 (2015-03-10 12:23:00) [8]Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал
«List index out of bounds (-1)»
в конкретном месте? (во время переоткрытия dataset)
sniknik (2015-03-10 11:35:00) [9]> Я просто на время выполнения запроса, заблокировал компонент dbrgStatistica.Enabled := false; правильно?
> Но в результате работает. :-)
затычка по аналогии - до включения пылесоса открываю окно, и взрыва нет. правильно?
нет, не правильно.
ладно повезло, день ветреный, успевает проветрится, а попадется на штиль?
sniknik (2015-03-10 11:30:00) [10]вот это "пылесос"
> dbrgStatistica.Enabled := true;
да не включил, искры нет, взрыва нет...
а это
> ibdsWord.FetchAll;
> ibdsWord.Open;
"утечка газа" скорее всего. из-за не полных(не выбранных) данных и бывают значения позиций/количества записей в -1.
на что в общем то явно указывает
> List index out of bounds ( -1)
и если там все построено на "позиционной навигации"... понятно все в общем.
Плохиш (2015-03-10 00:10:00) [11]
> У меня появилась ошибка «List index out of bounds ( -1)»
Попытка обратиться к элементу пустого списка.
> Я просто на время выполнения запроса, заблокировал компонент
> dbrgStatistica.Enabled := false;
> правильно?
>
Неправильно. 100% в твоих обработчиках событий этого dbrgStatistica говнокод без проверок.
KBO78 (2015-03-09 22:28:00) [12]кгшзх
Нашел, такую пакость мне делает TDBRadioGroup (dbrgStatistica)
procedure TFMain.dbrgStatisticaChange(Sender: TObject);
begin
if (cbMethodSort.ItemIndex = 4)
and (dbrgStatistica.ItemIndex = 0) then
begin
dbrgStatistica.Enabled := false;
ibdsWord.Close; //error
ibdsWord.SelectSQL.Clear;
ibdsWord.SelectSQL.Add(ARequire);
ibdsWord.FetchAll;
ibdsWord.Open;
ibdsWord.First;
dbrgStatistica.Enabled := true;
end;
end
end;
Я просто на время выполнения запроса, заблокировал компонент dbrgStatistica.Enabled := false;
правильно?
Но в результате работает. :-)
кгшзх (2015-03-09 17:20:00) [13]Удалено модератором
KBO78 (2015-03-09 17:20:00) [14]проверяю :-( их не так уж и мало
кгшзх (2015-03-09 17:17:00) [15]Удалено модератором
KBO78 (2015-03-09 17:12:00) [16]т.е. с утечкой газа - понятно - это отдельный процесс (и его нужно поискать), и утечка происходит всегда
ну а все же "step over" - это тогда сверх сила, которая может сказать, что от искры в розетке ни какого взрыва быть не может, даже если будет утечка газа.
кгшзх (2015-03-09 16:46:00) [17]у тебя на кухне утечка газа.
ты про это еще не знаешь.
заходишь на кухню, и включаешь в розетку пылесос.
в розетке проскакивает искра и кухня взрывается.
ты после этого будешь так же твердолобо искать причину взрыва в пылесосе?
ведь кухня взорвалась аккурат после того как пылесос включили в розетку.
KBO78 (2015-03-09 16:38:00) [18]Хорошо я знаю, что она где-то происходит, но смена режима на пошаговый, не может же пропустить злопулучное место и дойти до конца, без ошибки, как не в чем не бывало (в моем случае вывести выборку в dataset)...?
junglecat (2015-03-09 16:28:00) [19]> ibdsWord с связан с datasource
а этот датасорс к какому-нибудь визуальному контролу прицеплен?
кгшзх (2015-03-09 16:21:00) [20]я знаю на какой строке.
ты не знаешь на какой строке она происходит, тебе только кажется что она там.
поэтому и появилась эта ветка.