在Delphi中的Debug2-assert

1)函数原型

Delphi内置(system内部函数)了Assert调试过程,语法是如下  

procedure  assert(condition:boolean;[Message:string]);

 

如果cond为false,那么显示错误信息msg,并且触发异常(可在IDE里中断)。

 

2)处理函数:

TAssertErrorProc = procedure (const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);

因为这个函数是编译器内置的,里面提供了源代码文件名、行号的信息,所以可以通过重写这个函数,完成日志记录的功能;示例如下所示:

procedure MyAssertProc(const Message, Filename: string;

    LineNumber: Integer; ErrorAddr: Pointer);

Var

   runErrMsg:String;

begin

runErrMsg := format('Error: %s, in file(%d): %s, Addr: %p',

                      [Message, LineNumber, FileName, ErrorAddr]);

if IsConsole then

    Writeln(runErrMsg)

else

    MessageBox(0, pChar(runErrMsg), 'Error Log by AssertLogs', 0);

end;

 

initialization

   oldAssertErrorProc := AssertErrorProc;//保存旧的处理函数

   AssertErrorProc:=@MyAssertProc;//使用自定义的处理函数替代原先的处理函数

finalization

AssertErrorProc := oldAssertErrorProc;//恢复旧的处理函数

 

 

3)条件编译:Assert directives (Delphi)

 

Type  
Switch  
Syntax  
{$C+} or {$C-} {$ASSERTIONS ON} or {$ASSERTIONS OFF}  
Default  
{$C+} {$ASSERTIONS ON}  
Scope  
Local  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值