设断点,按f7分步执行!
或者用try……except……end捕捉出错信息!
25  procedure TForm2.FormCreate(Sender: TObject);
26  VAR
27    i,j:integer;
28  begin
29    i:=5;
30  j:=0;
    try;//加
31  i:=i/j;    //showmessage('unit2.pas 文件中 31 行出错')
    except//加
      showmessage('unit2.pas 文件中 31 行出错');//加  
    end;  //加  
32  end;
33

解决方案 »

  1.   

    大哥,好像不行吧!
    Delphi编译后,还那里去记原先源程序中的行号。
    开发时用用F7、8、9还可以看看出错的地方,编译后就难些了吧?我琢摩够呛。找出错的地址还是可以的。请指正!
      

  2.   

    在编译选项里加上Assertion,
    在代码里写上Assert(Contidion, 'ErrorMessage');
    当出错的时候,就能看到。
      

  3.   

    BaldZhang:
    能否教我具体怎么做,我怎么在编译选项里没有找到Assertion?
    非常感谢!
      

  4.   

    Project --> Options... --> Compiler --> Debugging --> Assertions 前面打勾,
    表示你的程序要编译器加入对Assert的支持。在代码里加入对Assert函数的调用,比如:
     
    在 i := i/j; 之前 加入 Assert(j <> 0, 'J = 0 , devide by zero');这样,即使不在调试状态运行程序,你的程序也会报告说在XXX单元的第XXX行触发了一个
    EAssertionFailed 这样的一个异常。
      

  5.   

    project-options-compilers-debugging-assertions
      

  6.   

    实在太感谢您!
    我应怎么取得xxx单元xxx行值自己处理(放到自己的showmessage()里?)
      

  7.   

    这句话会由一个对话框显示出来的,也可以在Application.HandleException里去自己处理。
      

  8.   

    比如是Application.HandleException的什么属性?
      

  9.   

    procedure TForm1.OnApplicationException(Sender: TObject; E: Extption);
    begin
      ShowMessage(E.Message);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnException := OnApplicationException;
    end;
      

  10.   

    我想你是位高手,能否交个朋友mail?
    我的mail  :  [email protected]