全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4681
推到 Plurk!
推到 Facebook!

執行錯誤知道在第幾列?

答題得分者是:阿子
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-19 22:31:10 IP:61.67.xxx.xxx 未訂閱
請問各位!

Delphi5以下有沒有什麼辦法, 在使用 try....except 中, 當發生錯誤時, 可以知道 try .... except 之間是那一列發生問題, 我希望的是要能列出在那一列, 因為現在的錯誤都是透過 E.Message 顯示當時發生錯誤的訊息, 可是有時候很多程式碼遇到一塊時, 根本不知道是那一列所引發, 而造成客戶出現問題我們也無法得知引發點, 像以前 basic, clipper, dbase 當掉時都會出現在row number 的序號!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-19 22:49:30 IP:211.22.xxx.xxx 未訂閱
微軟的debugview可以用嗎?
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-19 23:03:24 IP:222.124.xxx.xxx 訂閱
使用RTTI 資訊 是可以應該可以逹到您要的需求但可能要花時間去處理不少東西,基本上是用使用Exceptopns 機制加上RTTI 資訊就可以完整的顯示出來。 建議可以使用第三方元件 Eurekalog 這套元件,它本身就有完整的機制,還跟delphi IDE 有相當高的整合度可以使用其產生資訊檔直接快速轉到該錯誤的位置去。在Pro版本有提供完整的Source 。

Eurekalog 網址:http://www.eurekalog.com/index.php
------
從思考取勝一切~q
編輯記錄
阿子 重新編輯於 2007-05-19 23:14:26, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-19 23:16:05 IP:61.67.xxx.xxx 未訂閱
我不清楚debugview是否可用, 但我想這應該是一個debug用的工具, 並不是我要東西, 因為我希望是程式丟到客戶端run時, 出問題Delphi的except 可以直接顯示錯在那一列, 謝謝
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-20 14:34:25 IP:61.64.xxx.xxx 訂閱
那就用懶人法,每一行後加上 一個 message box 
然後,看死在哪一個
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-20 17:24:44 IP:61.67.xxx.xxx 未訂閱
我勒, 那怎麼可能, 程式有上萬行, 那豈不是累死人, syntax兄您愛說笑了, 我按阿子副站長的指示下載該元件, 也確實研究一下, 發現這套工具的確可以解決我要的問題, 當天我就向該公司註冊購買, 等編譯好丟到客戶端做測試看看!
謝謝!
===================引 用 syntax 文 章===================
那就用懶人法,每一行後加上 一個 message box
然後,看死在哪一個
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-20 17:35:40 IP:125.231.xxx.xxx 未訂閱
其實。我曾在 Borland C++ 3.1 版時的公用變數中。有看到這一項。
(唯一有從頭K到尾的一套使用手冊)
可是那是 C,不是 Delphi. 不知道通不通用。
而且也年代久遠,不知道現在是否還依然支援。^^
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-05-20 21:35:16 IP:61.67.xxx.xxx 未訂閱
暗兄, 話好像沒有說完哦! 我不知道你提到的方法為何?
===================引 用 暗黑破壞神 文 章===================
其實。我曾在 Borland C 3.1 版時的公用變數中。有看到這一項。
(唯一有從頭K到尾的一套使用手冊)
可是那是 C,不是 Delphi. 不知道通不通用。
而且也年代久遠,不知道現在是否還依然支援。^^
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-05-20 22:27:22 IP:125.231.xxx.xxx 未訂閱
也就是說,有點像現在的 Borland C++Builder 中有一個公用變數 __ThrowExceptionName, __ThrowLineNumber, __ThrowFileName
這類的東西。
只是我不知道 Delphi 有沒有。
你查一下 help 看看有沒有這個東東。
依那個範例。就可以直接找到你要的 Line Number 了。
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-05-20 22:33:29 IP:125.231.xxx.xxx 未訂閱
剛才查了一下。以 C++Builder 而言。它有一些公用變數(巨集)。
當年有的,大多還有留著。 Delphi 你要自己找一下了。

__LINE__ 這是說在原始程式的第幾行 。
__FUNC__ 這是說現在的函數名。

如果 Delphi 有對應的東西的話。這應該足夠應付你要的功能了。
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-05-21 00:04:39 IP:125.231.xxx.xxx 未訂閱
再追蹤一下。看一下 google 上說的。
C/C 有 pre-compiler 所以有 __LINE__ 這種巨集。
而 Delphi 的 compiler 好像比 C 少一次。所以它的編譯時加快很多。
所以沒有 __LINE__ 這種巨集。
不過在 google 網上論壇
borland.public.delphi.objectpascal 有人說到 Delphi pre-processor (__FILE__, __LINE__)
這類的討論。似乎就是有一個 pre/post process 的方法。用個批次檔加上 awk 做到這樣的功能。

http://groups.google.com.tw/group/borland.public.delphi.objectpascal/browse_thread/thread/6528d2f0fb8838e5/6bf15615d477c281?lnk=st&q=delphi pre-processor&rnum=1&hl=zh-TW#6bf15615d477c281
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-05-21 00:42:47 IP:61.67.xxx.xxx 未訂閱
感謝暗兄那麼費心幫我找到一些資訊, 我會仔細看看, 謝謝!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-05-21 16:33:21 IP:122.124.xxx.xxx 未訂閱
真是好用的工具,美中不足的是在BCB中無法檢查Memory leak ><
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-05-22 10:01:50 IP:61.67.xxx.xxx 未訂閱
這是Eurekalog 的訊息畫面, 我把它給中文化, 還可以直接傳送到e-mail, 感覺不錯, 下圖有個錯誤列數明確指定當機的地方

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-05-22 20:21:51 IP:211.22.xxx.xxx 未訂閱
好東西!
感謝阿子版大!
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-05-22 20:34:42 IP:220.130.xxx.xxx 訂閱
剛試玩了一下..真的很棒..非常感謝XD
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-05-23 16:52:19 IP:222.124.xxx.xxx 訂閱
很高興本人提供的資訊能對各位有用,早上msn 時雄雄發現怎麼這麼討論串怎麼這麼長還在討論,本想說本人提供的資訊不符合,上來一樣才發現是原來是還有其它接著其它的部份在討論,若大家對 EurekaLog元件型工具 有興趣,有時間的話本人可以在寫一些應用的方法跟大家分享,不過前題是有時間
------
從思考取勝一切~q
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#18 引用回覆 回覆 發表時間:2007-05-24 16:29:47 IP:61.67.xxx.xxx 未訂閱
好期待----
===================引 用 阿子 文 章===================
很高興本人提供的資訊能對各位有用,早上msn 時雄雄發現怎麼這麼討論串怎麼這麼長還在討論,本想說本人提供的資訊不符合,上來一樣才發現是原來是還有其它接著其它的部份在討論,若大家對 EurekaLog元件型工具 有興趣,有時間的話本人可以在寫一些應用的方法跟大家分享,不過前題是有時間。?
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#19 引用回覆 回覆 發表時間:2007-05-29 12:16:28 IP:60.248.xxx.xxx 未訂閱
很好用的元件

試用之後,在回寄錯誤報表,這功能不錯

只是我用msa.hinet.net當派送郵件,指定smtp伺服器時,要改成另一個host,重build都沒用
不知道是它的bug還是我環境的問題
編輯記錄
 重新編輯於 2007-05-29 12:17:11, 註解 無‧
系統時間:2024-11-22 22:45:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!