Rave сообщает о проблемах, если принтер не установлен
Я тестировал некоторый код D2006 с использованием отчетов Rave на виртуальной машине и обнаружил, что приложение зависает при создании отчета в формате PDF, если принтер не установлен. Зависание происходит здесь:
exception message : The application seems to be frozen.
main thread ($108):
005c5e62 +106 MyApp.exe RpRPTF SimpleTextWidth
006198f7 +31b MyApp.exe RpMemo TMemoBuf.GetLine
0061a44a +086 MyApp.exe RpMemo TMemoBuf.MemoLinesLeft
005cba28 +014 MyApp.exe RpBase TBaseReport.MemoLines
00672e8e +072 MyApp.exe MyAppReports PrintReportParagraph
00677f73 +acb MyApp.exe MyAppReports PrintSummaryReportBody
0066b208 +010 MyApp.exe MyAppMainForm TMainForm.RvSystemSummaryReportPrint
005c6f35 +015 MyApp.exe RpBase TBaseReport.PrintEvent
005c8066 +03a MyApp.exe RpBase TBaseReport.Execute
0060a299 +125 MyApp.exe RpSystem TRvSystem.GenerateReport
0060a52a +07e MyApp.exe RpSystem TRvSystem.Execute
0067d364 +0ac MyApp.exe MyAppReports DoPrintSummaryReport
0067d64d +1d5 MyApp.exe MyAppReports ProduceReports
0066e966 +1e6 MyApp.exe MyAppProcessing ProcessMyAppData
0066ab9b +0d7 MyApp.exe MyAppMainForm TMainForm.DoProcessData
и, несомненно, это связано с нулевой шириной страницы, что приводит к путанице в коде, который вычисляет, сколько строк может уместиться на странице или что-то подобное.
Дело в том, что я пишу PDF, а не печатаю, поэтому я не понимаю, почему отсутствие принтера может привести к отключению этого кода (установлен Acrobat Reader). Если я устанавливаю принтер, он ведет себя так. Зачем мне нужен установленный принтер (приложение может быть установлено на рабочей станции без установленного принтера - с сообщением об ошибке, которое гласит: "Вы не можете сгенерировать отчет в формате PDF, если не установите принтер" кажется немного неуклюжим)?
1 ответ
Это давняя ошибка в Rave Reports. Это связано с отсутствием установленного принтера по умолчанию. Я поищу ссылки на старые сообщения форума Borland/CodeGear ( CodeNewsFast, похоже, не отвечает прямо сейчас). Возникла проблема с предположением о наличии принтера. Я не знаю, было ли это исправлено в самых последних версиях Rave. (D2006 был довольно давно.)
Если я правильно помню, решение было установить текстовый драйвер на "макет" принтер. Это позволяет Rave продолжать функционировать.