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

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

Ошибка Stack overflow [D7, Paradox]


Страницы:   1 2 3 4 5

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"


Страницы:   1 2 3 4 5

Наверх

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