Добрый день. При экспорте в PDF на Windows 7 появляется ошибка Access Violation. На Windows XP все отлично экспортируется. С чем может быть связана ошибка?
Да, вот он.
Думал, что это со всеми отчетами ошибка, но оказалось, что простой отчет с пару frxMemoView не выдает ошибок.
Ктстате, если экспортировать этот отчет без составления и заполнения полей, т.е. просто открыть на предпросмотр, то ошибки не возникает.
Странно конечно. Никак не могу найти причину возникновения ошибки. Сейчас сделал отдельный проект, в нем таблица с простейшими данными, остальные данные заполнены обычными текстовыми строками "test" - ошибки не появилось. Зато в почти таком же отчете ошибка AV. Сохранил отчет на котором появляется ошибка в fp3-файл. Открываю его в окне предпросмотра, экспортирую в PDF - ошибка.
Настройки экспорта стандартные. А как можно узнать, сколькими потоками он экспортируется?
Для того, чтобы воспроизвести действия, я создал простейшую программу, которая бы запускала предпросмотр. В окне предпросмотра я нажимаю кнопку Open и открываю файл, приаттаченный в 6м сообщении. Делаю экспорт в PDF на Windows 7 - получаю ошибку.
Скачайте прикрепленный к этому сообщению архив, запустите Project1.exe на Windows 7, откройте файл отчета и экспортируйте в PDF - должна появиться ошибка AV.
Draeden, как же все-таки можно вычислить, в чем проблема? Почему на моем компьютере эта ошибка появляется, а на вашем - нет?
'Random' рекомендую Вам скачать коды библиотеки JCL: JEDI Code Library http://wiki.delphi-jedi.org/index.php?titl...DI_Code_Library
Там есть замечательный модуль ExceptDlg.pas. Подключите его к своей тестовой программке. Скомпилируйте ее вместе с отладочной информацией. В результате получите более информативное сообщение об Access Violation. Там будет информация стеке в момент падения, вместе со ссылками на конкретные стоки кода которые послужили причиной AV.
xlaalaa, спасибо за совет. Использую JEDI уже давно, но про такую вещь не знал. Добавил в проект файл ExceptDlg.pas. В главно меню выбрал Project | Insert JCL Debug Data. На пустом проекте все происходит нормально. Странно даже, что ошибка AccessViolation пропала на том проекте, что я приаттачил в сообщении 9. Зато проделав те же действия и в главной программе, в которой возникает ошибка AccessViolation - на этапе компиляции компилер выдает ошибку [Linker Fatal error] Access Violation. Link terminated. Может я не так использую этот модуль? Подскажите как правильно.
Для тестов я не использую пункт "Project | Insert JCL Debug Data" достаточно подключить .pas файл и выбрать пункт "Project \ Options" а там "Linker \ Map file \ Detailed" и "Linker \ Include TD32 debug info"
JCL Debug Data - в упакованном формате JDBG я обычно приклеиваю к модулям вручную только тогда когда делаю финальную сборку для поставки клиентам. С помощью утилиты MakeJclDbg.exe. Также предварительно отрезаю Борландовую отладочную информацию (TDS) с помощью tdstrp32.exe.
Draeden, как же все-таки можно вычислить, в чем проблема?
Сделайте debug-версию программы. В настройках найдите список исключений которые отладчик игнорирует, там должно быть что то вроде EAccessViolation. Сделайте так, чтобы отладчик перехватывал это исключение и запустите программу. Когда возникнет AV, отладчик покажет в коде где оно вызвано.
Комментарии
Думал, что это со всеми отчетами ошибка, но оказалось, что простой отчет с пару frxMemoView не выдает ошибок.
Ктстате, если экспортировать этот отчет без составления и заполнения полей, т.е. просто открыть на предпросмотр, то ошибки не возникает.
Для того, чтобы воспроизвести действия, я создал простейшую программу, которая бы запускала предпросмотр. В окне предпросмотра я нажимаю кнопку Open и открываю файл, приаттаченный в 6м сообщении. Делаю экспорт в PDF на Windows 7 - получаю ошибку.
Скачайте прикрепленный к этому сообщению архив, запустите Project1.exe на Windows 7, откройте файл отчета и экспортируйте в PDF - должна появиться ошибка AV.
'Random' рекомендую Вам скачать коды библиотеки JCL: JEDI Code Library http://wiki.delphi-jedi.org/index.php?titl...DI_Code_Library
Там есть замечательный модуль ExceptDlg.pas. Подключите его к своей тестовой программке. Скомпилируйте ее вместе с отладочной информацией. В результате получите более информативное сообщение об Access Violation. Там будет информация стеке в момент падения, вместе со ссылками на конкретные стоки кода которые послужили причиной AV.
JCL Debug Data - в упакованном формате JDBG я обычно приклеиваю к модулям вручную только тогда когда делаю финальную сборку для поставки клиентам. С помощью утилиты MakeJclDbg.exe. Также предварительно отрезаю Борландовую отладочную информацию (TDS) с помощью tdstrp32.exe.
К стати. Еще есть аналогичная коммерческая библиотека http://eurekalog.com