Я тестировал некоторый код 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, если не установите принтер» кажется немного неуклюжим)?