如果是在调试状下,再多的资源消耗也没有关系;所以还是有可能的;好象VC就可以支持,所以才会上Delphi来问?

解决方案 »

  1.   

    Assert在Delphi好象没有这个效果;请详细解述.
      

  2.   

    好像可以,只要包含调试信息就可以乐,不过一个简单的程序,包含调试信息之后就会大很多(288-->1.4M)???????
      

  3.   

    to:Kingron(WinAPI)
      请详细说明一下?
      

  4.   

    to:Kingron(WinAPI):
      C里是支持的(在#define __LINE__),但DELPHI中好象不支持吧?因为DELPHI不支持宏调用。
      

  5.   

    应该行的,我昨天在看Exe文件的格式的时候,里面就说乐,如果包含调试信息可以包含行信息.但是具体的怎么做我也不知道~~~~~~~~~
      

  6.   

    听说一个叫numega公司开发的产品,调试功能很强大;哪位知道?
      

  7.   

    听说一个叫numega公司开发的产品,调试功能很强大;哪位知道?  
      

  8.   

    没有必要大动干戈
    try
      {}
    except
      {保存当前的错误地址}
    end;//test
    const
      cErrLogFile = 'ErrAddr.log';
    begin
      try
        Query1.Close;
        Query1.SQL.Text := Edit1.Text;
      except
        with TStringList.Create do try
          if FileExists(cErrLogFile) then LoadFromFile(cErrLogFile);
          Add('<XGUIDX>'{Shift+Ctrl+G} + FormatDateTime('YYYY-MM-DD HH:NN:SS', NOW));
          SaveToFile(cErrLogFile);
        finally
          Free;
        end;
    end;//出错的时候你可以在代码中查<XGUIDX>
      

  9.   

    你是不是看角本程序看多了
    如果你想研究一下怎样控制Delphi IDE
    请关注我发的帖子
      

  10.   

    如果按zswang(zs)的方法去做,对一个几万行甚至十几万行的程序,估计可能性不大;
    排错的工作量和难度也加大了不少;无论如何感谢zswang(zs);
      

  11.   

    用BCB就有了。
    define CODELINE __LINE__
      

  12.   

    理论上可以这么做:
    编一个汇编过程,在需要调试的地方调用它。
    在过程中取调用者的返回地址,并记录。
    DELPHI的IDE支持通过指令地址查找语句。
      

  13.   

    Assert可以,只是必须把project--options--compiler--debugging--Assertions选中,
    你可以在程序用下面语句测试:
      Assert( false, 'test');
      

  14.   

    如果你只是想记录行号、文件名信息,在设置Assertions选项的基础上,采用如下方法:
    Procedure RecordFileNameAndLineNum( Const errmsg : String );
    Var psFileName, peFileName  : Integer;
        psLineNum , peLineNum   : Integer;
        strFileName, strLineNum : String;
    Begin
      psFilename := Pos( '(', errmsg );
      Inc( psFileName );
      peFileName := Pos( ',', errmsg );
      strFileName:= Copy( errMsg, psFileName, peFileName-psFileName );
      psLineNum  := Pos( 'line ', errmsg );
      psLineNum := psLineNum + 5;
      peLineNum  := Pos( ')', errmsg );
      strLineNum := Copy( errMsg, psLineNum,  peLineNum-psLineNum );
      //记录 strFileName 和 strLineNum
    End;在需要记录文件名和行号的地方,如下:
      Try
        Assert( false );
      Except
        On E : EAssertionFailed Do
           RecordFileNameAndLineNum( E.message );
      End;