Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
ВнизИсключения Найти похожие ветки
← →
Loco (2002-07-07 17:40) [0]Народ, если не сложно, подскажите.
При компиляции программы - ошибок нет, зато когда по клику прога начинает обрабатывать процедуру - выдаётся мессадж следующего содержания:"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
← →
MBo (2002-07-07 17:47) [1]что в strField?
← →
Loco (2002-07-08 13:29) [2]В strField имя поля таблицы, в котором и осуществляется Locate.
← →
Skier (2002-07-08 14:25) [3]>Loco
Напиши конкретно :
- что именно у тебя в strField
- что именно у тебя в Edit1.Text
(на момент возникновения Exception)
А ещё лучше покажи кусочек кода.
← →
Loco (2002-07-08 14:38) [4]Пожалуйста, смотрите.
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;
← →
Eugene Lachinov (2002-07-08 14:42) [5]Проверь, что на момент Locate Table1 открыт
← →
Johnmen (2002-07-08 14:47) [6]Повтор встречных вопросов :
- что именно у тебя в strField
- что именно у тебя в Edit1.Text
На указанной строке указанная ошибка генериться в принципе не может...
← →
Skier (2002-07-08 14:47) [7]> Loco
А если так :
Table1.Locate(strField,
VarArrayOf([Edit1.Text]), [loCaseInsensitive,
loPartialKey])
???
Но прежде сделай то что советует Eugene Lachinov
← →
Loco (2002-07-08 14:51) [8]>Eugene Lachinov
Дык ведь открыт.
← →
Loco (2002-07-08 14:54) [9]>Skier
а нифига не выходит - нету разницы, та же ошибка!!
← →
Loco (2002-07-08 14:57) [10]Ребята, а может использовать подобный механизм фильтрации.
То есть, чтобы не указатель перемещался, а записи фильтровались по Edit1Change.
Это возможно?????
← →
Eugene Lachinov (2002-07-08 14:58) [11]А OnDataChange случайно не определен ?
← →
Skier (2002-07-08 14:59) [12]>Loco
Мне кажется, что ошибка где-то в другом
месте.
Если приспичило, то шли мне весь код и таблицы,
что-нибудь придумаем...
← →
oomneeq (2002-07-08 15:11) [13]У тебя Table1 не в гриде ли отображается?
ТОгда, возможно, это грид ругается.
Ну или что там у тебя из Data aware компонентов на эту таблицу повешено.
Установить, так ли это, можно отвязав Table1 от грида или
Table1.DisableControls
← →
NailS (2002-07-08 15:24) [14]А слабо стек посмотреть на момент ошибки?
Много интересного увидеть можно, чем просто так гадать.
← →
Loco (2002-07-09 10:58) [15]>oomneeq
Точно в гриде.
А DisableControls не помогает - пробовал
← →
Loco (2002-07-09 11:10) [16]Всем sorry за моё вчерашнее внезапное пропадание.
Такая хреновина была!!
Сижу себе в офисе, на улице гроза, молнии там гром вся фигня.
У меня 4 окна открыто: почта там, форум, плюс Delphi с НЕСОХРАНЁННЫМ кодом (фигня там какая-то строк 30-40).
Тут БА-БАХ - темно как у негра в ... (офис просто в подвале) и UPS начинает пищать (жалобно так).
Ну и соответственно комп не работает.
Короче вырубили у нас питание и у меня был короткий рабочий день :))).
← →
Skier (2002-07-09 15:35) [17]>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 16:19) [18]>Skier
По поводу полей это правильно просто когда тебе код отправлял
как раз всю структуру таблиц переделывал, не успел исправить.
А по поводу RadioGroup2 как исправить, подскажи, если не сложно.
← →
Loco (2002-07-09 16:30) [19]>Skier
ШПА-А-АСИБО!!!!!
Уже исправил.
← →
Skier (2002-07-09 16:33) [20]>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 17:07) [21]>Skier
вообще-то я уже исправил, но с сообщением это ты хорошо придумал,
сейчас переделаю!
Ещё раз ШПА-А-АСИБО!!!!!
Должен буду.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c