ошибка: Project raised exception class 'External:SIGSEGV'.

Модератор: Модераторы

Ответить
jenny
новенький
Сообщения: 59
Зарегистрирован: 25.05.2015 21:45:27

ошибка: Project raised exception class 'External:SIGSEGV'.

Сообщение jenny »

Всем доброго времени суток!

выскакивает странная ошибка при событии Afterscroll в ADOQuery: Project raised exception class 'External:SIGSEGV'.
Подскажите что это может быть
xterro
постоялец
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Сообщение xterro »

Т.к нет ни кода, ни проекта, то включаем режим Нострадамуса: возможно идёт обращение к объекту, который ещё не создан(например для него не вызывалось Create(), типа обявил переменную типа ADOQuery, а сделать для неё типа: "q := QDOQuery.Create()" заюыли), либо обращение к указателю, который уже никуда не указывает.
jenny
новенький
Сообщения: 59
Зарегистрирован: 25.05.2015 21:45:27

Сообщение jenny »

указатель верный, не знаю что уже здесь не так. Может что то не понимаю, я в этом новичок
Последний раз редактировалось jenny 14.09.2015 12:23:58, всего редактировалось 1 раз.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

ADOQuery2.FieldByName('c_id').asString
Проверьте, что с ADOQuery2 всё в порядке и что данный запрос выдаёт таки приемлемое значение

Код: Выделить всё

procedure TForm1.ADOQuery2AfterScroll(DataSet: TDataSet);
var aValue: string;
begin
    ADOquery1.Close;
    ADOQuery1.SQL.Clear;
    aValue := ADOQuery2.FieldByName('c_id').asString;
    ADOQuery1.SQL.Add('select * from question where c_id='+aValue);
    ADOQuery1.Open;
end;   


А ещё лучше, привыкайте к использованию параметров.

Код: Выделить всё

procedure TForm1.ADOQuery2AfterScroll(DataSet: TDataSet);
begin
    ADOquery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from question where c_id=:id');
    ADOQuery1.ParamByName('id').asString := ADOQuery2.FieldByName('c_id').asString;
    ADOQuery1.Open;
end; 
jenny
новенький
Сообщения: 59
Зарегистрирован: 25.05.2015 21:45:27

Сообщение jenny »

Все два способа проверила, все равно выскакивает ошибка
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

А на какой конкретно строчке процедуры ADOQuery2AfterScroll ошибка, если сделать точку останова на первом операторе и проходить в отладчике по F8?
jenny
новенький
Сообщения: 59
Зарегистрирован: 25.05.2015 21:45:27

Сообщение jenny »

на строчке begin...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

jenny писал(а):на строчке begin...

А если закомментировать всё внутри процедуры (но оставить саму процедуру) - SIGSEG появляется?
jenny
новенький
Сообщения: 59
Зарегистрирован: 25.05.2015 21:45:27

Сообщение jenny »

Снег Север писал(а):А если закомментировать всё внутри процедуры (но оставить саму процедуру) - SIGSEG появляется?


нет тогда ошибка не появляется. Да кстати этот же код я использовала в других событиях и никакой ошибки нет. Только на AfterScroll...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

А на чем у вас программа - делфи или лазарус? Какая версия? Какие компоненты используются? Потому, что я проверял на своей тестовой программе с ADO с компонентами Zeos и там всё работает в AfterScroll .
Ответить