delphi – 即使ApplyUpdates在try …之外,仍会出现错误弹出窗口

找到解决方案,请参阅下面的评论

D5,odbc到mysql数据库

这段代码

with QryCmdPerf do begin
    Close;
    ParamByName('ACCTID').AsInteger:= AcctId;
    ParamByName('FROMDT').Asstring:= MysqLDate(FromDt);
    ParamByName('TODT').Asstring:= MysqLDate(ToDt);
    Open;
    first;
    try
      edit;
      FieldByName('PnL').AsFloat:= 97979;
      ApplyUpdates;
    except
      close;
    end;
  end;    // with

(特别是“ApplyUpdates”)如果PnL字段已经具有值97979,则会出现带有文本“Update Failed”的弹出窗口,显然是因为这段代码

procedure TUpdatesql.Execsql(UpdateKind: TUpdateKind);
begin
  with Query[UpdateKind] do
  begin
    Prepare;
    Execsql;
    if RowsAffected <> 1 then DatabaseError(SUpdateFailed);
  end;
end;

在DBTables.pas中.无论如何,我希望能够发布ApplyUpdates,如果它没有进行任何更新,就不必担心弹出窗口.但如果“尝试……除外”不起作用,会是什么?

TIA

解决方法

您将调试器显示的对话框与程序显示的对话框混淆.请看几年前我写的这篇文章

> Why do I continue getting error messages even after I have written an exception handler?

它描述了几种避免调试器干扰的方法

>使用“高级断点”临时禁用抛出异常的代码周围的调试器.>配置调试器以忽略某些异常类型. (更仔细地阅读调试器的消息,以确切了解您正在处理的异常类.)>配置调试器不要在任何异常时中断.>完全关闭集成调试器.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...