![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка Stack overflow [D7, Paradox]
mmelik © (2009-03-03 18:28:00)Доброго времени суток всем. Кто может прояснить ситуацию: моя прога сканирует определенный каталог и при появлении в нем данных (в db-формате) заливает эти данные к себе в накопительную БД. Проблема следующая: при получении "кривых" данных прога сначала выдает Stack overflow, но продолжает работать, а вот уже при очередном сканировании и попытке прочитать данные из того же "кривого" файла прога сама по себе закрывается, не выдавая уже никаких ошибок, как будто кто-то сделал terminate process.
Есть мысли? Или хотя бы как поймать ошибку (try...except - не ловит, прога на второй попытке вываливается)?
mmelik (2009-03-03 20:18:00) [81]Пожалуйста, вот код:
{Определяем путь к словарю-смены}
sPath:= ExtractFilePath(Application.ExeName)+'DATA\'+ABBR+'\'+EndDay+'\'+lstENDDAYData.Items[n]+'.db';
{Считываем записи словаря-смены}
dt.sqlActionEndDay.Active:= false;
dt.sqlActionEndDay.SQL.Clear;
dt.sqlActionEndDay.DatabaseName:= ExtractFilePath(sPath);
dt.sqlActionEndDay.SQL.Add('select * ');
dt.sqlActionEndDay.SQL.Add('from "'+sPath+'" ');
try
dt.sqlActionEndDay.Active:= true;
except
dt.sqlInfo.Active:= false;
dt.sqlActionEndDay.Active:= false;
AddToErrorsLog(dt.sqlActionEndDay.SQL.Text,true);
AddToErrorsLog(PChar(Exception(ExceptObject).Message),true);
AddToErrorsLog(DateTimeToStr(Now)+', function AppendEndDay('+ABBR+', '+EndDay+')'+#13#10+
'Ошибка выполнения SQL-запроса к: '+sPath, false);
exit;
end;
Соответственно, при первом проходе по "кривому" файлу ошибка ловится нормально и прога продолжает работать, а вот на втором проходе на строке
dt.sqlActionEndDay.Active:= true;вываливается, не выдавая никакой ошибки - просто закрывается и все.
Сергей М. (2009-03-03 19:56:00) [82]
> try...except - не ловит
Врешь, причем нагло)
фыва (2009-03-03 19:53:00) [83]а где код?
mmelik (2009-03-03 19:46:00) [84]либо неверная структура либо порченый файл. Как бы там ни было это делает сам BDE, я лишь отлавливаю ошибку и пишу ее в лог.
Desdechado (2009-03-03 19:04:00) [85]
> при получении "кривых" данных
Как ты это определяешь? Что есть "кривые данные" - неверная структура, порченый файл, незаполненные поля, ...?