怎样定位到源码的相关位置? 有一个应用程序,我想通过一触发事件(比如点击按钮),使得屏幕的光标显示在该程序源码某方法的实现位置,同时可以返回该位置的行号。效果就好比delphi编译后双击提示框中的错误项,就可显示在出错的地方。不知道怎样实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 >>有一个应用程序,我想通过一触发事件(比如点击按钮),使得屏幕的光标显示在该程序源码某方法的实现位置你想你的程序編繹成 exe 後還帶源碼??設置選中 菜單Options -- compiler 中的 uses debug dcus不要選中 Optimization還有選中 Linker 中的 include TD32 debug info你的程序會大好多倍, 但會帶上調試信息, 在這個基礎上可以定位源碼的位置 是不是想实现DELPHI的Alt+G的行数定位功能啊找找源码看看 我也想写这样的一个程序,我用masm测试过,它会自动指出错误的代码行.返回位置行号的代码:Procedure TForm1.GetPosition(Sender: TRichEdit);var iX,iY : Integer; TheRichEdit : TRichEdit;begin iX := 0; iY := 0; TheRichEdit := TRichEdit(Sender); iY := SendMessage(TheRichEdit.Handle, EM_LINEFROMCHAR, TheRichEdit.SelStart, 0); iX := TheRichEdit.SelStart - SendMessage(TheRichEdit.Handle, EM_LINEINDEX, iY, 0); Panel1.Caption := IntToStr(iY + 1) + ':' + IntToStr(iX + 1) ;end;procedure TForm1.RichEditMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin GetPosition(RichEdit);end;procedure TForm1.RichEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);begin GetPosition(RichEdit);end; 在异常处理的地方,使用 ASSERT(FALSE) ,会弹出函数 然后你自己解析一下函数 那么就可以估计出出异常的地方 不过有可能出现几行的误差 谢谢大家!helldream2002:我想过文件处理,但怎样让程序自己知道引用了哪些单元,以及该方法或函数又在哪一个单元呢?xiyixiaowm50:我的qq:71108209。先谢谢了!beyondtkl:异常处理的地方?可以具体一些吗?我现在也不知道哪里会出现异常啊。多谢! 好像大家还没能理解我的意思,看来是我表达得不清楚啊!说得具体点吧,就是有几个project,我怎样通过程序控制得到它引用了哪些单元,各个单元中有哪些方法?如果能够知道这个方法所在的pas文件名的话,我想问题就可以解决了。 请问Delphi下,怎么调试ISAPI Filter 100分献上 看下面的查询语句,帮忙找错。。。 delphi中,事件句柄能否对应多个事件处理过程? 如何确认BAT文件已执行完毕? 数据插入问题 请问这个函数怎么解释? 请教问题。 dll中奇怪的问题!!!!!高分求救]!! 怎样用汉字来起工程名字的??最小化窗口的时候,窗口标题都是英文的,很不顺眼。 请问一个很简单的问题 关于年度结转的问题。 如何使用COM对象来控制EXCEL建立一个新的工作表
中的 uses debug dcus
不要選中 Optimization還有選中 Linker 中的
include TD32 debug info你的程序會大好多倍, 但會帶上調試信息, 在這個基礎上可以定位源碼的位置
找找源码看看
Procedure TForm1.GetPosition(Sender: TRichEdit);
var
iX,iY : Integer;
TheRichEdit : TRichEdit;
begin
iX := 0; iY := 0;
TheRichEdit := TRichEdit(Sender);
iY := SendMessage(TheRichEdit.Handle, EM_LINEFROMCHAR, TheRichEdit.SelStart,
0);
iX := TheRichEdit.SelStart - SendMessage(TheRichEdit.Handle, EM_LINEINDEX,
iY, 0);
Panel1.Caption := IntToStr(iY + 1) + ':' + IntToStr(iX + 1) ;
end;procedure TForm1.RichEditMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
GetPosition(RichEdit);
end;procedure TForm1.RichEditKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
GetPosition(RichEdit);
end;
如果能够知道这个方法所在的pas文件名的话,我想问题就可以解决了。