Rave сообщает о неполадках, если принтер не установлен

#delphi #pdf #printing #rave-reports

#delphi #PDF #печать #rave-отчеты

Вопрос:

Я тестировал некоторый код D2006 с использованием Rave reports на виртуальной машине и обнаружил, что приложение зависает, когда я создаю отчет в формате 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, если не установите printer» кажется немного неуклюжим)?

Ответ №1:

Это давняя ошибка в Rave Reports. Это связано с тем, что принтер по умолчанию не установлен. Я поищу ссылки на старые сообщения на форумах Borland / CodeGear (CodeNewsFast, похоже, сейчас не отвечает). Возникла проблема с предположением о наличии принтера. Я не знаю, было ли это исправлено в самых последних версиях Rave. (D2006 был довольно давно.)

Если я правильно помню, решением было установить текстовый драйвер на «макет» принтера. Это позволяет Rave продолжать функционировать.

Комментарии:

1. вы когда-нибудь отслеживали эти сообщения?

2. @rossmcm: Извините… Я забыл проследить за этим. : ( Вот один, который я нашел в CodeNewsFast — убедитесь, что вы следите за потоками.