【问题标题】:Create error messages Delphi 7创建错误消息 Delphi 7
【发布时间】:2013-10-15 15:56:52
【问题描述】:

好的,我目前是一名学习 IT 的 11 年级学生。我正在尝试完成一项实用作业,但遇到了一些问题,如果用户没有将数据输入 RichEdit,我使用的教科书没有告诉我如何创建错误消息。谁能建议我如何做到这一点?感谢您抽出宝贵时间提供帮助。

【问题讨论】:

  • 例如这样if RichEdit1.Text = '' then MessageDlg('The field cannot be empty!', mtError, [mbOK], 0) 在一个将进行验证的事件中(通常是OnExit 事件)。
  • 谢谢!那很快……现在试试。
  • @DNgentle 一个建议是积极主动,在放下枪支之前使用您可用的资源:-)。
  • 当你在课堂上提问时,你的导师怎么说?
  • @RobKennedy 事实上,教师可能知道在你的教科书中查看的确切位置

标签: delphi windows-7 error-handling


【解决方案1】:

这就是引发一般异常的方式(使用SysUtils.Exception 类):

raise Exception.Create('Error Message');

未处理的异常会导致执行路径逃逸到 Delphi RTL 内部的默认异常处理程序中,然后将 Exception.Message 的值显示给用户。

您甚至可以像这样处理自己的异常:

try
  ...
  raise Exception.Create('Error Message');
  ...
except
  on E: Exception do
  begin
    ShowMessage(E.Message);
  end;
end;

但你实际上不会这样做。您引发异常,以便调用您的方法的代码可以处理错误。

如果您想在其他地方(在调用者中)处理错误,请引发异常。

要简单显示系统标准错误对话框,可以使用MessageDlg

MessageDlg('Error Message', mtError, [mbOK], 0);

在这种情况下,窗口的标题只是“错误”。如果必须设置标题,请使用CreateMessageDialog

with CreateMessageDialog('Error Message', mtError, [mbOK], mbOK) do
begin
  try
    Caption := 'Error Caption';
    ShowModal;
  finally
    Release;
  end;
end;

Exception 类在 System.SysUtils 中。 MessageDlgCreateMessageDialogVcl.Dialogs 中。

或者使用TApplication.MessageBox()方法:

Application.MessageBox('Error Message', 'Error Caption', MB_OK or MB_ICONERROR);

【讨论】:

  • 或者,如果您使用TApplication.MessageBox()Winapi.MessageBox() 而不是MessageDlg(),则可以将标题设置为输入参数。
  • 要考虑的另一件事是创建自己的异常类型,例如ENoContent,它允许以更系统的方式捕获某些类型的异常,然后使用一个消息框在一个地方进行通用处理等。
  • 但在来自 Delphi RTL 的消息之前,取决于 Windows 的配置方式,未处理的异常首先转到“Windows 正在检查问题的解决方案”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多