我一直在使用虚拟机上的 Rave 报告测试一些 D2006 代码,发现如果没有安装打印机,当我生成 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 报告”似乎有点笨拙)?