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

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

Исключения [D6, Win95/98, WinME]


Страницы:   1 2

Loco ©   (2002-07-07 17:40:00) 

Народ, если не сложно, подскажите.
При компиляции программы - ошибок нет, зато когда по клику прога начинает обрабатывать процедуру - выдаётся мессадж следующего содержания: "Project XXX.exe raised exception class EListError with message"List index out of bounds (-1)".
Process stopped. Use Step or Run to continue."

Строка, которая порождает этот самый месссадж:
Table1.Locate(strField, Edit1.Text, [loCaseInsensitive, loPartialKey]);
Пробовал вместо Locate использовать Lookup - вообще никаких сообщений, но тем не менее ничего не работает.
Подскажите как исправить, plizzz.
Заранее очень благодарен.


Loco: loco@userline.ru


Loco   (2002-07-09 17:07:00) [1]

>Skier
вообще-то я уже исправил, но с сообщением это ты хорошо придумал,
сейчас переделаю!
Ещё раз ШПА-А-АСИБО!!!!!
Должен буду.


Skier   (2002-07-09 16:33:00) [2]

>Loco
1) Проще всего в дизайне сразу поставить
RadioButton3.Checked := True или RadioButton4.Checked := True
2) Можно (если ничего не выбрано в RadioGroup2) выводить
сообщение. Примерно так :


case RadioGroup1.ItemIndex of
0 : strField := "Fam";
1 : strField := "Passport";
else begin
ShowMessage("Не выбран критерий поиска !");
Exit;
end; //else
end; //case


Loco   (2002-07-09 16:30:00) [3]

>Skier
ШПА-А-АСИБО!!!!!
Уже исправил.


Loco   (2002-07-09 16:19:00) [4]

>Skier
По поводу полей это правильно просто когда тебе код отправлял
как раз всю структуру таблиц переделывал, не успел исправить.
А по поводу RadioGroup2 как исправить, подскажи, если не сложно.


Skier   (2002-07-09 15:35:00) [5]

>Loco

Дааааааа......уж !


procedure TForm1.Edit1Change(Sender: TObject);
var
strField: String;
begin
//Если режим поиска выключен - выйти
if not CheckBox1.Checked
then
begin
Edit1.Enabled:=False;
RadioGroup2.Enabled:=False;
RadioButton3.Enabled:=False;
RadioButton4.Enabled:=False;
Exit;
end
else
Edit1.Enabled:=True;
RadioGroup2.Enabled:=True;
RadioButton3.Enabled:=True;
RadioButton4.Enabled:=True;
//Выбор критерия поиска

//У Вас, батенька :
// 1) в таблице Table1 нет ни поля Fam, ни поля Passport
// 2) кроме того, если RadioGroup1.ItemIndex = - 1
// (когда в RadioGroup2 ничего не выбрано) то strField
// равняется пустой строке !

case RadioGroup1.ItemIndex of
0: strField:="Fam";
1: strField:="Passport";
end;
//Выполняем поиск
Table1.Locate(strField, Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;


Loco   (2002-07-09 11:10:00) [6]

Всем sorry за моё вчерашнее внезапное пропадание.
Такая хреновина была!!
Сижу себе в офисе, на улице гроза, молнии там гром вся фигня.
У меня 4 окна открыто: почта там, форум, плюс Delphi с НЕСОХРАНЁННЫМ кодом (фигня там какая-то строк 30-40).
Тут БА-БАХ - темно как у негра в ... (офис просто в подвале) и UPS начинает пищать (жалобно так).
Ну и соответственно комп не работает.
Короче вырубили у нас питание и у меня был короткий рабочий день :))).


Loco   (2002-07-09 10:58:00) [7]

>oomneeq
Точно в гриде.
А DisableControls не помогает - пробовал


NailS   (2002-07-08 15:24:00) [8]

А слабо стек посмотреть на момент ошибки?
Много интересного увидеть можно, чем просто так гадать.


oomneeq   (2002-07-08 15:11:00) [9]

У тебя Table1 не в гриде ли отображается?
ТОгда, возможно, это грид ругается.
Ну или что там у тебя из Data aware компонентов на эту таблицу повешено.
Установить, так ли это, можно отвязав Table1 от грида или
Table1.DisableControls


Skier   (2002-07-08 14:59:00) [10]

>Loco
Мне кажется, что ошибка где-то в другом
месте.
Если приспичило, то шли мне весь код и таблицы,
что-нибудь придумаем...


Eugene Lachinov   (2002-07-08 14:58:00) [11]

А OnDataChange случайно не определен ?


Loco   (2002-07-08 14:57:00) [12]

Ребята, а может использовать подобный механизм фильтрации.
То есть, чтобы не указатель перемещался, а записи фильтровались по Edit1Change.
Это возможно?????


Loco   (2002-07-08 14:54:00) [13]

>Skier
а нифига не выходит - нету разницы, та же ошибка!!


Loco   (2002-07-08 14:51:00) [14]

>Eugene Lachinov
Дык ведь открыт.


Skier   (2002-07-08 14:47:00) [15]

> Loco
А если так :
Table1.Locate(strField,
VarArrayOf([Edit1.Text]), [loCaseInsensitive,
loPartialKey])
???

Но прежде сделай то что советует Eugene Lachinov


Johnmen   (2002-07-08 14:47:00) [16]

Повтор встречных вопросов :
- что именно у тебя в strField
- что именно у тебя в Edit1.Text

На указанной строке указанная ошибка генериться в принципе не может...


Eugene Lachinov   (2002-07-08 14:42:00) [17]

Проверь, что на момент Locate Table1 открыт


Loco   (2002-07-08 14:38:00) [18]

Пожалуйста, смотрите.
procedure TForm1.Edit1Change(Sender: TObject);
var
strField: String;
begin
if not CheckBox1.Checked
then
begin
Edit1.Enabled:=False;
RadioGroup2.Enabled:=False;
RadioButton3.Enabled:=False;
RadioButton4.Enabled:=False;
Exit;
end
else
Edit1.Enabled:=True;
RadioGroup2.Enabled:=True;
RadioButton3.Enabled:=True;
RadioButton4.Enabled:=True;
//Выбор критерия поиска
case RadioGroup1.ItemIndex of
0: strField:="Familia";
1: strField:="Passport";
end;
//Выполняем поиск
Table1.Locate(strField, Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Edit1Change(Sender);
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
Edit1Change(Sender);
end;


Skier   (2002-07-08 14:25:00) [19]

>Loco
Напиши конкретно :
- что именно у тебя в strField
- что именно у тебя в Edit1.Text
(на момент возникновения Exception)

А ещё лучше покажи кусочек кода.


Loco   (2002-07-08 13:29:00) [20]

В strField имя поля таблицы, в котором и осуществляется Locate.


Страницы:   1 2

Наверх

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