使用assert取得行號的問題 |
答題得分者是:ANDY8C
|
cswang1210
一般會員 發表:46 回覆:42 積分:17 註冊:2005-01-06 發送簡訊給我 |
各位好:
我想要在程式Showmessage的時候,順便有問題的程式行號顯示出來,方便找問題.... 我在網路上找到了一段程式,試了之後,發現有個問題. 我將執行assert執行的程式段寫到一個procedure,然後,在需要顯示的地方,call這個procedure, 可是,顯示出來的行號,不是我想要的"Line 28"而是"Line 34" (請參考程式碼) 請問我該怎麼改善,或者有其它的寫法.....謝謝 ------ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } procedure myassert; public { Public declarations } procedure TraceLog(LogMessage: WideString); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin myassert; //Line 28 end; procedure TForm1.myassert; begin try assert(0=1,''); //Line 34 except on E : Exception do tracelog(E.Message); end; end; procedure TForm1.TraceLog(LogMessage: WideString); begin logMessage := Copy(LogMessage,pos(', line ',LogMessage) 7,pos(')',LogMessage) - pos(', line ',LogMessage) - 7); showmessage(logMessage); end; end.
編輯記錄
cswang1210 重新編輯於 2013-04-18 14:43:44, 註解 無‧
cswang1210 重新編輯於 2013-04-18 14:44:18, 註解 無‧ cswang1210 重新編輯於 2013-04-18 14:45:01, 註解 無‧ |
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
我也有類似的需求.....希望知道程式 "死" 在那一支 PAS 及 那個 Procedure 中
如果 能知道 Line ,那就夠好 我的寫法 showmessage( 'ERROR (3012A) 資料存取錯誤!!' #13#10#13#10 ' 請洽 資訊單位或原軟體開發公司....... ' #13#10#13#10 '[' sender.UnitName '.Pas -> Procedure Data_Trans() ]'); // 我是沒深入研究,所以手 key或 showmessage( 'ERROR (3012A) 資料存取錯誤!!' #13#10#13#10 ' 請洽 資訊單位或原軟體開發公司....... ' #13#10#13#10 '[' Application.UnitName '.Pas -> Procedure Data_Trans() ]'); // Data_Trans() 會因為 showmessage 所在的位置不同, // 必須修改(應該可以自動取得當時的 Procedure 或 Function 的名稱 謝謝您
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |