为什么Delphi 7应用程序会以“退出”;遇到问题,需要关闭“;如果用户';s的电脑没有安装打印机?

为什么Delphi 7应用程序会以“退出”;遇到问题,需要关闭“;如果用户';s的电脑没有安装打印机?,delphi,delphi-7,Delphi,Delphi 7,我收到一些零星报告,称我的应用程序(使用Delphi 7编译)拒绝在某些PC上启动-它立即退出,并显示Windows错误消息: “…exe遇到问题,并且 需要关闭。我们很抱歉 不便之处” 到目前为止,我的建议一直是安装默认打印机(任何打印机-甚至PDF打印机),问题就会消失。如何修复应用程序?我的程序只有在用户按下打印按钮时才能访问PrinterDialog控件。我收到一封电子邮件,其中包含非常有用的stacktrace: exception class : EReadError excep

我收到一些零星报告,称我的应用程序(使用Delphi 7编译)拒绝在某些PC上启动-它立即退出,并显示Windows错误消息:

“…exe遇到问题,并且 需要关闭。我们很抱歉 不便之处”


到目前为止,我的建议一直是安装默认打印机(任何打印机-甚至PDF打印机),问题就会消失。如何修复应用程序?我的程序只有在用户按下打印按钮时才能访问PrinterDialog控件。

我收到一封电子邮件,其中包含非常有用的stacktrace:

exception class   : EReadError
exception message : Error reading PrinterDialog.Copies: Operation not supported on selected printer.

main thread ($5d4):
0044c0a2  Classes      HandleException
0044c258  Classes      TReader.ReadProperty
0044bbf5  Classes      TReader.ReadDataInner
0044bbd7  Classes      TReader.ReadData
00450675  Classes      TComponent.ReadState
0044ba51  Classes      TReader.ReadComponent
0044bc69  Classes      TReader.ReadDataInner
0044bba8  Classes      TReader.ReadData
00450675  Classes      TComponent.ReadState
004963a5  Controls     TControl.ReadState
004998c9  Controls     TWinControl.ReadState
004afcc9  Forms        TCustomForm.ReadState
0044c9a9  Classes      TReader.ReadRootComponent
00449f42  Classes      TStream.ReadComponent
00446a3b  Classes      InternalReadComponentRes
00446bc5  Classes      InitComponent
00446c56  Classes      InitInheritedComponent
004af661  Forms        TCustomForm.Create
004518b0  Classes      StdWndProc
004b7111  Forms        TApplication.CreateForm
006abe32           176 initialization
这个问题是由于我在设计时设置了tpralog的一些属性,比如打印页码的标志。当Delphi试图在没有打印机的PC上创建表单并设置这些属性时,会发生错误

解决方案是删除旧的tprindialog并用新的默认tprindialog替换,并在安装新打印机后在运行时设置属性。

您可以“尝试”崩溃语句:

  Try
    Statement
  {Statement...}
  Except
    Statement
  {Statement...}
  End; 

try/except的进一步说明