Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Вниз

Как правильно быстрее найти элемент с ошибкой List index out of b   Найти похожие ветки 

 
KBO78   (2015-03-09 15:05) [0]

Доброе всем время суток.
У меня появилась ошибка «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-09 15:14) [1]

Да, притом что события "BeforeClose"б "AfterClose" - пустые


 
кгшзх ©   (2015-03-09 15:26) [2]

а может поискать не там где светло, а там где идет работа со списком?


 
KBO78   (2015-03-09 15:32) [3]

например?
т.е. это мне нужно проверить все "combobox", "listbox" и т.п.?


 
кгшзх ©   (2015-03-09 15:35) [4]

если ошибка в индексе списка - нужно проверять участки работы со списком.
я что там тебе нужно, и что там еще например - я бес понятия


 
KBO78   (2015-03-09 15:52) [5]

Хорошо, над этим я сейчас буду думать...
а что настет режима «step over», почему он не спотыкается? (я та думал им до истыны докапаться - а тут такой облом :-( )


 
junglecat ©   (2015-03-09 16:01) [6]

> ibdsWord.FetchAll;
>       ibdsWord.Open;

и это работает? не наоборот надо?

ibdsWord с чем связан? через datasource или еще как-то


 
кгшзх ©   (2015-03-09 16:10) [7]

почему он не спотыкается?

потому что нет ошибки там, где ты ее ожидаешь увидеть.
вот и не спотыкается


 
KBO78   (2015-03-09 16:11) [8]

ibdsWord с связан с datasource,
до позавчера все работало (как и последние 4 года) ... да я конечно вносил изменения, но не такие уж голобальные


 
KBO78   (2015-03-09 16:16) [9]

потому что нет ошибки там, где ты ее ожидаешь увидеть.
вот и не спотыкается


ну у меня же не многопотоковое приложение, и ошибка вылетает, я знаю на какой строке. Я специально "showmessage" поставил
или не так? (т.е. я думал шаг за шагом...)


 
кгшзх ©   (2015-03-09 16:21) [10]

я знаю на какой строке.

ты не знаешь на какой строке она происходит, тебе только кажется что она там.
поэтому и появилась эта ветка.


 
junglecat ©   (2015-03-09 16:28) [11]

> ibdsWord с связан с datasource

а этот датасорс к какому-нибудь визуальному контролу прицеплен?


 
KBO78   (2015-03-09 16:38) [12]

Хорошо я знаю, что она где-то происходит, но смена режима на пошаговый, не может же пропустить злопулучное место и дойти до конца, без ошибки, как не в чем не бывало (в моем случае вывести выборку в dataset)...?


 
кгшзх ©   (2015-03-09 16:46) [13]

у тебя на кухне утечка газа.
ты про это еще не знаешь.
заходишь на кухню, и включаешь в розетку пылесос.
в розетке проскакивает искра и кухня взрывается.

ты после этого будешь так же твердолобо искать причину взрыва в пылесосе?
ведь кухня взорвалась аккурат после того как пылесос включили в розетку.


 
KBO78   (2015-03-09 17:12) [14]

т.е. с утечкой газа - понятно - это отдельный процесс (и его нужно поискать), и утечка происходит всегда
ну а все же "step over" - это тогда сверх сила, которая может сказать, что от искры в розетке ни какого взрыва быть не может, даже если будет утечка газа.


 
кгшзх ©   (2015-03-09 17:17) [15]

Удалено модератором


 
KBO78   (2015-03-09 17:20) [16]

проверяю :-( их не так уж и мало


 
кгшзх ©   (2015-03-09 17:20) [17]

Удалено модератором


 
KBO78   (2015-03-09 22:28) [18]

кгшзх

Нашел, такую пакость мне делает 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-10 00:10) [19]


> У меня появилась ошибка «List index out of bounds (-1

Попытка обратиться к элементу пустого списка.

> Я просто на время выполнения запроса, заблокировал компонент
>  dbrgStatistica.Enabled := false;
> правильно?
>

Неправильно. 100% в твоих обработчиках событий этого dbrgStatistica говнокод без проверок.


 
sniknik ©   (2015-03-10 11:30) [20]

вот это "пылесос"
> dbrgStatistica.Enabled := true;
да не включил, искры нет, взрыва нет...

а это
> ibdsWord.FetchAll;
> ibdsWord.Open;
"утечка газа" скорее всего. из-за не полных(не выбранных) данных и бывают значения позиций/количества записей в -1.

на что в общем то явно указывает
> List index out of bounds (-1)
и если там все построено на "позиционной навигации"... понятно все в общем.


 
sniknik ©   (2015-03-10 11:35) [21]

> Я просто на время выполнения запроса, заблокировал компонент  dbrgStatistica.Enabled := false; правильно?
> Но в результате работает. :-)
затычка по аналогии - до включения пылесоса открываю окно, и взрыва нет. правильно?

нет, не правильно.
ладно повезло, день ветреный, успевает проветрится, а попадется на штиль?


 
KBO78   (2015-03-10 12:23) [22]

Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал

«List index out of bounds (-1)»

в конкретном месте? (во время переоткрытия dataset)


 
KBO78   (2015-03-10 12:24) [23]

Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал

«List index out of bounds (-1)»

в конкретном месте? (во время переоткрытия dataset)


 
Плохиш ©   (2015-03-10 12:35) [24]


> Хорошо, а как надо

проверять наличие элементов, ну или нанять программиста.

PS. кстати, здесь не любят партизан, не показывающих сразу необходимый код.


 
sniknik ©   (2015-03-10 12:35) [25]

> Хорошо, а как надо обрабатывать TDBRadioGroup, чтоб он не выкидывал
хорошо, а как надо правильно открывать окно чтобы не взрывалось ... ?  

"утечку" устрани. блин... хочется написать то что в [15]/[17] похоже было написано.


 
Rouse_ ©   (2015-03-10 15:02) [26]

Если под отладчиком, то иди в модуль SysUtils, и становись бряком на вот таком коде:

procedure Exception.RaisingException(P: PExceptionRecord);
begin
 SetInnerException; // <<< вот тут ставь бряк


как поднимется исключение, смотри CallStack, в котором и будет показано что происходило перед генерацией исключения.


 
KBO78   (2015-03-10 16:03) [27]

Rouse_
спасибо, посмотрю


 
Dennis I. Komarov ©   (2015-03-10 17:45) [28]

Выкинуть все DB GUI компоненты и будет счастье


 
KBO78   (2015-03-11 13:54) [29]

После "Begin"
"вырубил" отображение изменений всем конкретным компонентам, методом
ibdsWord.DisableControls;
а перед "end" - включил - "ibdsWord.EnableControls;"



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.051 c
15-1450710851
kapwell
2015-12-21 18:14
2017.01.15
работа на делфи


2-1419009922
AlexeyTG
2014-12-19 20:25
2017.01.15
Заново переписал Просьба оценить "корявость кода" v2


2-1430918293
Zheksonz
2015-05-06 16:18
2017.01.15
Определить тип активного компонента


15-1457038707
Германн
2016-03-03 23:58
2017.01.15
Runtime packages


4-1281020267
Danger
2010-08-05 18:57
2017.01.15
SQLite в winapi-приложении





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский