Можно тут немного на судьбу пожаловаться?

Любые обсуждения, не нарушающие правил форума.

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

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Можно тут немного на судьбу пожаловаться?

Сообщение Climber »

Рефакторил проект, уперся в тупик.
Есть одна функция, вылетает при совершенно невинных обращениях к компоненту TZQuery и при вызове ShowMessage.
Доходит до смешного:

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

procedure MyForm.XXX;
var q: TZQuery;
begin
q:=TZQuery.Create(Self);  // Тут вылетает!!!
ShowMessage('Тест');  // И тут выетает!!!
end;
try .. except не помогает - приложение просто молча валится и все. Если функцию закомментить - все работает. Потоков нет. Я в трауре второй день.

Всем спасибо за внимание и сочувствие.
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Re: Можно тут немного на судьбу пожаловаться?

Сообщение GrayEddy »

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

q := TZQuery.Create(nil)

заодно и проверить потом на вшивость

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

if q <> nil then ... else ...
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Можно тут немного на судьбу пожаловаться?

Сообщение Climber »

Если бы все было так просто! Такие варианты я пишу сразу, "не приходя в сознание". Если б они всегда помогали, я бы счастливым человеком был. А тут реально призадумался.
Нечто похожее было около года назад, я так и не разобрался, в чем проблема, просто с нуля переписал кучу кода. Теперь куча раз в пять больше, и че-то мне лень переписывать всё...
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Re: Можно тут немного на судьбу пожаловаться?

Сообщение GAMER »

Какая СУБД?
Я как-то работал с МайСКЛ, так там ошибка вылетала совершенно не там, где ожидалось.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Можно тут немного на судьбу пожаловаться?

Сообщение Climber »

GAMER писал(а):Какая СУБД?
А какая разница? На ShowMessage тоже падает. Я надеюсь на понедельник и свежую голову. А ща пока логи базы перелопачиваю...
Если пройдет, отпишусь, что помогло, если сам пойму... :(
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Re: Можно тут немного на судьбу пожаловаться?

Сообщение stikriz »

Где-то в другом месте неправильно работаете с памятью. Это может быть где угодно, хоть в 26 строке.
У меня такое было. Думал рехнусь...
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Можно тут немного на судьбу пожаловаться?

Сообщение Vadim »

Climber писал(а):procedure MyForm.XXX;

Может быть перед "My" поставить букву T?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Можно тут немного на судьбу пожаловаться?

Сообщение zub »

stikriz
+1
Гдето раньше портится куча. Отлов таких ошибок дело очень увлекательное))

>>Если функцию закомментить - все работает
не факт, вылетит гденить в другом месте.
Смотреть все места где идет работа с выделенной памятью - указатели, стринги, динмассивы...
Я в таких случаях коментирую куски программы, пока ошибка не исчезнет, исчезнет - скорее всего куча портится в последнем закоментированом коде.
Может ченибуть всплывет в heaptrc? под линукс можно попробовать valgrind, там вроде есть контроль к обращениям невыделенной памяти
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38
Контактная информация:

Re: Можно тут немного на судьбу пожаловаться?

Сообщение hinst »

stikriz
Думал рехнусь...

интересно, и что же спасло вас от неминуемой моральной гибели :?:
Аватара пользователя
stikriz
энтузиаст
Сообщения: 612
Зарегистрирован: 15.03.2006 08:37:47

Re: Можно тут немного на судьбу пожаловаться?

Сообщение stikriz »

Я нашел те места, где освобождаю память повторно. В деструкторах. Был метод Clear виртуальный, в потомке перегружен. В предке вызывался, в потомке тоже... Ну, далее понятно :-)
Ответить