![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка Stack overflow [D7, Paradox]
mmelik © (2009-03-03 18:28:00)Доброго времени суток всем. Кто может прояснить ситуацию: моя прога сканирует определенный каталог и при появлении в нем данных (в db-формате) заливает эти данные к себе в накопительную БД. Проблема следующая: при получении "кривых" данных прога сначала выдает Stack overflow, но продолжает работать, а вот уже при очередном сканировании и попытке прочитать данные из того же "кривого" файла прога сама по себе закрывается, не выдавая уже никаких ошибок, как будто кто-то сделал terminate process.
Есть мысли? Или хотя бы как поймать ошибку (try...except - не ловит, прога на второй попытке вываливается)?
Anatoly Podgoretsky (2009-03-04 10:57:00) [21]> mmelik (04.03.2009 0:14:35) [35]
При Stack overflow? :-)
sniknik (2009-03-04 10:48:00) [22]> при выполнении явно указанного запроса средствами TQuery
и при указании * в запросе, проверял в Database Decktop, он ближе к вопросу т.к. тоже выдает Stack overflow, в отличие от SQL Explorer.
при явном указании списка полей запрос там работает. т.е. проблема в структуре именно с этим, (нет завершения списка полей? неверно указано количество? не знаю, как там по структуре должно быть.)
> Почему бы при прочих равных условиях не попробовать воспользоваться TTable вместо TQuery ?
или взять независимый от BDE ридер парадокса типа
http://forum.chertenok.ru/my_download.php?tema=del&action=show&id=172
но лучше устранить причину... т.к. очевидно, что файл скопирован с какими то нарушениями, возможно в момент когда был открыт основной программой и изменялся/не завершен.
brother (2009-03-04 10:46:00) [23]> А откуда уверенность, что остальные невалидные? может, как
> раз он один
[42] перечитай
Виталий Панасенко (2009-03-04 10:38:00) [24]А откуда уверенность, что остальные невалидные? может, как раз он один
Сергей М. (2009-03-04 10:01:00) [25]
> Если куча других файлов с Valid=No закачиваются нормально
Что значит "закачиваются" ?
Если имеется ввиду, что твой SELECT-запрос выполняется успешно, то это еще не говорит ни о чем. Грабли с инвалидным контейнером могут выстрелить в любой другой момент в любом другом месте твоего кода, обращающегося к получаемому тобой таким образом набору данных.
Да и к чему вообще такойзапрос ?
Обрати внимание, что падение BDE происходит лишь при выполнении явно указанного запроса средствами TQuery, в то время как при обращении к тому же самому "кривому" контейнеру средствами TTable открытие НД и навигация по нему проходит успешно. Почему бы при прочих равных условиях не попробовать воспользоваться TTable вместо TQuery ?
mmelik (2009-03-04 01:25:00) [26]Сергей М. - предлагаю продолжить завтра, большое вам спасибо за то, что все таки вытерпели мои профанские нападки. Мне очень надо разобраться до конца, принципы такие. Если куча других файлов с Valid=No закачиваются нормально, а всего лишь один из них - нет, то это не повод чтобы не закачивать ни одного файла с Valid=No.
Ладно, будет день, будет пища.
Германн (2009-03-04 01:25:00) [27]
> Значит БДЕ не дает никаких гарантий нормальной работы с
> этим контейнером)
>
Ты понял, ты понял меня наконец-то!
:-)
Так я всё ёще Брут?
Али как?
:)
Сергей М. (2009-03-04 01:18:00) [28]
> десяток других файлов, которые нормально подкачиваются и
> везде у них стоит Valid=No
А когда ты схлопочешь другое фатальное исключение, нежели stack overflow, что тогда запоешь ?)
Тебе ж ясным буржуйским языком сказано Valid= NO!
Значит БДЕ не дает никаких гарантий нормальной работы с этим контейнером)
Германн (2009-03-04 01:16:00) [29]
> mmelik © (04.03.09 01:10) [56]
Самое лучшее решение - это перейти с парадокса на нормальный (современный) движок БД.
Они, по крайней мере, хоть имеют нормальную документацию.
mmelik (2009-03-04 01:10:00) [30]Сергей М. - и все таки это не так, я открыл в этом же sqlexplorer`e с десяток других файлов, которые нормально подкачиваются и везде у них стоит Valid=No.
Соответственно, решения пока нет.
Господа, время позднее. Всем участникам - выражаю личную огромную благодарность за содействие. Если будет у кого возможность - предлагаю продолжить завтра.
Еще раз обозначу задачу, которую, собственно, не удалось пока решить в ходе данного поста:
- есть сбойный файл rcheck.db ( http://ifolder.ru/10849685)
- необходимо программно понять, что он сбойный, но таким образом, чтобы предотвратить переполнение стека.
Германн (2009-03-04 00:59:00) [31]
> Сергей М. © (04.03.09 00:53) [52]
>
>
> > Германн © (04.03.09 00:39) [47]
>
>
> И ты, Брут !?)
>
> Вот я смотрю SQLExplorer'ом дефиницию этой таблицы и вижу
> там Valid=No.
>
> Какого хрена, спрашивается, открывать таблицу, делать к
> ней запросы и производить прочие на полном сурьезе манипуляции,
> если БДЕ внятно говорит об инвалидности таблицы ?)
>
А DBD32 ничего не говорит плохого о сей таблице.
Прошелся по всей таблице. Прошелся по всем пунктам Info Stucture. Ничего не нашёл.
А Брут - это не я. Брут - это Paradox+BDE. :)
mmelik (2009-03-04 00:58:00) [32]Сергей М. - это очень важно: каким способом можно "спросить" BDE о валидности таблицы, соответственно, из кода в Delphi?
Германн (2009-03-04 00:55:00) [33]
> mmelik © (04.03.09 00:47) [51]
>
> Германн - на всякий случай разъясню кратко суть: есть файлы
> данных, которые ежедневно необходимо подкачивать в накопительную
> БД. Есть так же софт, который работает круглосуточно, сканирует
> определенный каталог, где собственно эти данные складываются,
> и подкачивает в накопиловку. Так вот именно на этом файле
> прога сама по себе закрывается.
Это мне уже давно понятно.
Что-то рушится в BDE при первой ошибке. Ну а при второй уже невозможно ничего предсказать.
Как я и говорил в [50] нужно искать в гугле.
Сергей М. (2009-03-04 00:53:00) [34]
> Германн © (04.03.09 00:39) [47]
И ты, Брут !?)
Вот я смотрю SQLExplorer'ом дефиницию этой таблицы и вижу там Valid= No.
Какого хрена, спрашивается, открывать таблицу, делать к ней запросы и производить прочие на полном сурьезе манипуляции, если БДЕ внятноговорит об инвалидности таблицы ?)
mmelik (2009-03-04 00:47:00) [35]Германн - на всякий случай разъясню кратко суть: есть файлы данных, которые ежедневно необходимо подкачивать в накопительную БД. Есть так же софт, который работает круглосуточно, сканирует определенный каталог, где собственно эти данные складываются, и подкачивает в накопиловку. Так вот именно на этом файле прога сама по себе закрывается.
Германн (2009-03-04 00:46:00) [36]
> Сергей М. © (04.03.09 00:40) [48]
Да причём тут билд Делфи?
Это парадокс + BDE.
А там сам чёрт ногу сломит.
Нужно искать в гугле. Мож кто с таким сталкивался.
mmelik (2009-03-04 00:41:00) [37]Delphi 7, BDE 5
Сергей М. (2009-03-04 00:40:00) [38]
> mmelik © (04.03.09 00:30) [42]
Ах так ты спортсмен ?!
Что же ты сразу не сказал ?)
Спортсменов мы уважаааам))
Ну давай, спортсмен, проверять-уточнять, в каких кедах ты пытаешься прыгнуть выше задницы)
Билд Делфи какой ?
Версия парадоксового БДЕ-драйвера ?
Германн (2009-03-04 00:39:00) [39]
> mmelik © (04.03.09 00:36) [46]
>
> Сергей М. -
> Все именно так. Теперь попробуйте запрос: select * from
> "rcheck.db"
>
Stack Overflow
mmelik (2009-03-04 00:36:00) [40]Сергей М. -
Все именно так. Теперь попробуйте запрос: select * from "rcheck.db"