如何得到当前执行的语句在源代码中的行数?

mycode 2001-06-03 01:16:00
在程序执行中,我想写入日志,记录当前发生的情况,同时我也想记录下来,自身这条语句在源代码中的行数,以便于查错时快速定位;
...全文
304 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
mycode 2001-06-23
  • 打赏
  • 举报
回复
好办法,好主意!
pipai 2001-06-19
  • 打赏
  • 举报
回复
如果你只是想记录行号、文件名信息,在设置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;
pipai 2001-06-19
  • 打赏
  • 举报
回复
Assert可以,只是必须把project--options--compiler--debugging--Assertions选中,
你可以在程序用下面语句测试:
Assert( false, 'test');
warrior 2001-06-19
  • 打赏
  • 举报
回复
理论上可以这么做:
编一个汇编过程,在需要调试的地方调用它。
在过程中取调用者的返回地址,并记录。
DELPHI的IDE支持通过指令地址查找语句。
mycode 2001-06-19
  • 打赏
  • 举报
回复
Delphi的是什么?
windindance 2001-06-18
  • 打赏
  • 举报
回复
用BCB就有了。
define CODELINE __LINE__
mycode 2001-06-17
  • 打赏
  • 举报
回复
还想得到更好的回答!
songlichao 2001-06-10
  • 打赏
  • 举报
回复
gz
mycode 2001-06-10
  • 打赏
  • 举报
回复
如果按zswang(zs)的方法去做,对一个几万行甚至十几万行的程序,估计可能性不大;
排错的工作量和难度也加大了不少;

无论如何感谢zswang(zs);
王集鹄 2001-06-09
  • 打赏
  • 举报
回复
你是不是看角本程序看多了
如果你想研究一下怎样控制Delphi IDE
请关注我发的帖子
王集鹄 2001-06-09
  • 打赏
  • 举报
回复
没有必要大动干戈
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>
mycode 2001-06-09
  • 打赏
  • 举报
回复
唔...
mycode 2001-06-08
  • 打赏
  • 举报
回复
还有人来说一说吗?
c_hk 2001-06-07
  • 打赏
  • 举报
回复
唔.....
c_hk 2001-06-07
  • 打赏
  • 举报
回复
观望
mycode 2001-06-07
  • 打赏
  • 举报
回复
听说一个叫numega公司开发的产品,调试功能很强大;哪位知道?
mycode 2001-06-06
  • 打赏
  • 举报
回复
听说一个叫numega公司开发的产品,调试功能很强大;哪位知道?
mycode 2001-06-05
  • 打赏
  • 举报
回复
谁来找到它?
windindance 2001-06-04
  • 打赏
  • 举报
回复
to:Kingron(WinAPI):
C里是支持的(在#define __LINE__),但DELPHI中好象不支持吧?因为DELPHI不支持宏调用。
mycode 2001-06-04
  • 打赏
  • 举报
回复
to:Kingron(WinAPI)
请详细说明一下?
加载更多回复(10)

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧