如何得到当前执行的语句在源代码中的行数? 如果是在调试状下,再多的资源消耗也没有关系;所以还是有可能的;好象VC就可以支持,所以才会上Delphi来问? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Assert在Delphi好象没有这个效果;请详细解述. 好像可以,只要包含调试信息就可以乐,不过一个简单的程序,包含调试信息之后就会大很多(288-->1.4M)??????? to:Kingron(WinAPI) 请详细说明一下? to:Kingron(WinAPI): C里是支持的(在#define __LINE__),但DELPHI中好象不支持吧?因为DELPHI不支持宏调用。 应该行的,我昨天在看Exe文件的格式的时候,里面就说乐,如果包含调试信息可以包含行信息.但是具体的怎么做我也不知道~~~~~~~~~ 听说一个叫numega公司开发的产品,调试功能很强大;哪位知道? 听说一个叫numega公司开发的产品,调试功能很强大;哪位知道? 没有必要大动干戈try {}except {保存当前的错误地址}end;//testconst 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> 你是不是看角本程序看多了如果你想研究一下怎样控制Delphi IDE请关注我发的帖子 如果按zswang(zs)的方法去做,对一个几万行甚至十几万行的程序,估计可能性不大;排错的工作量和难度也加大了不少;无论如何感谢zswang(zs); 用BCB就有了。define CODELINE __LINE__ 理论上可以这么做:编一个汇编过程,在需要调试的地方调用它。在过程中取调用者的返回地址,并记录。DELPHI的IDE支持通过指令地址查找语句。 Assert可以,只是必须把project--options--compiler--debugging--Assertions选中,你可以在程序用下面语句测试: Assert( false, 'test'); 如果你只是想记录行号、文件名信息,在设置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 和 strLineNumEnd;在需要记录文件名和行号的地方,如下: Try Assert( false ); Except On E : EAssertionFailed Do RecordFileNameAndLineNum( E.message ); End; 关于Record数据求助 求一条竖转横的sql语句!在线等待..急! 各位图像高手帮帮忙? 怎样用静态数组做函数参数呢? 接到个私活,大家看看应该价值多少? delphi当中有专门显示数字的控件吗? 随意拖动的窗体---菜鸟问题! 字符串解析 数据备份与恢复 我的DELPHI每次启动都要显示CPU窗口,怎样去掉???谢谢!!!!! 请问:怎样把图片缩小并保存? 看过李维这个鸟人写的ADO/MTS/COM+的书and开发过多层结构的战友,向你们请教几个问题,也欢迎其它人友情客串!
请详细说明一下?
C里是支持的(在#define __LINE__),但DELPHI中好象不支持吧?因为DELPHI不支持宏调用。
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>
如果你想研究一下怎样控制Delphi IDE
请关注我发的帖子
排错的工作量和难度也加大了不少;无论如何感谢zswang(zs);
define CODELINE __LINE__
编一个汇编过程,在需要调试的地方调用它。
在过程中取调用者的返回地址,并记录。
DELPHI的IDE支持通过指令地址查找语句。
你可以在程序用下面语句测试:
Assert( false, 'test');
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;