Как отловить ошибку Fr4 Делфями
Всем привет. В Делфи XE2 делаю программу, которая в цикле формирует отчеты из шаблона FR, передавая ему предварительно один или несколько значений параметров. По результатам формирования программа выгружает лог если в данном процессе были ошибки. Процедура, грубо говоря, выглядит так:
try
for i:=0 to 20 do
begin
.....
TfrxReport(form1.findcomponent(name_rep)).PrepareReport(true);
TfrxReport(form1.findcomponent(name_rep)).PreviewPages.SaveToFile(i+'.fp3');
end
except
on E : Exception do
//тут прописываем лог с ошибками
err_log.Lines.Add(datetimetostr(now)+' '+ini.ReadString('Отчеты',name_rep,'')+'; '+E.Message);
end;
И все вроде ничего, только в процессе выяснилось, что ошибки при формировании отчета (ошибки FR) никак не отлавливаются процедурой "Try...except", просто выводится на экран сообщение, нажимаешь на ОК и цикл продолжается дальше, в лог, понятно, ничего не записывается. Вероятней всего, что ошибки в FR отлавливаются в самом FR и второй раз в делфи не перехватить. Что в этом случае можно сделать? не хотелось, чтоб сообщения вываливались на экран, ну или в крайнем случае нужно, чтоб как то эти ошибки можно было помещать в лог.
Комментарии
На первом этапе я нашёл такую штуку:
frxCommonErrorHandler(),
но в каком исходнике она находится, я не знаю, т.к. у меня есть только скачанный с интернета frxClass.pas от какой-то из ломаных 4-х версий.
Ещё есть TfrxReport.EngineOptions.NewSilentMode, которое можно установить в simReThrow, тогда ошибки не будут показываться, а как раз вызовется исключение, куда как текст будет передан Errors.Text