線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:8811
推到 Plurk!
推到 Facebook!

Access Violation at Address XXXX 問題請教

答題得分者是:max5020
frog1
一般會員


發表:25
回覆:40
積分:18
註冊:2007-01-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-14 10:25:34 IP:219.81.xxx.xxx 訂閱
Hi, 各前輩
做資料庫編輯, 常需新增/修改資料庫資料, 非常煩索, 所以想做一個公用的的編輯程式, 只要在文字檔中設定好輸入的劃面, 及欄位名稱(需與對應的資料庫欄位名稱同), 即可由此做新增修改的功能
附件即為程式碼, 功能正常, 但執行行時會不定時的出現 Access Violation XXXX 的錯誤(該修改/新增的都有完成, 錯誤不影響功能), 查了好幾天, 還是無法解決, 只好請求前輩支援, 看是錯在那, 該如何修改, 或是有更好的方式來達到此目標



使用前請將 ADOConnect 設到TableName = Customer 的地方 (或修改 ADODataSet1.CommandText)
Customer的欄位名稱需有 CustCode,CustName,Address (或修改CustPanel.txt中的TEDIT資料)
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-14 16:19:29 IP:59.125.xxx.xxx 訂閱
trace看看在那一行出錯,
這樣比較容易查問題吧!!
frog1
一般會員


發表:25
回覆:40
積分:18
註冊:2007-01-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-14 16:58:59 IP:219.86.xxx.xxx 訂閱
有用 F8(Step Over)查過, 會在執行的Procedure (ConfirmEdt,ConfirmIns,Cancel) 最後的 End 出現錯誤
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-14 17:06:22 IP:59.125.xxx.xxx 訂閱
按F7再追進去啊!!
P.D.
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-14 18:44:19 IP:61.67.xxx.xxx 未訂閱
這應該很明顯是你的對應設計上有出現問題, 可能是某些對應到不存在的物件, 或者字段切入時, 物件還沒有被產生所導致, 利用f9tracer可以追蹤, 有一個好工具, 下載試用版來抓你的問題, 當程式當出時, 這個工具可以測到你錯誤的line code, 更方便知道是那裡出錯, 到這裡下載安裝吧
http://www.eurekalog.com/
frog1
一般會員


發表:25
回覆:40
積分:18
註冊:2007-01-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-02-15 12:10:40 IP:219.81.xxx.xxx 訂閱
Hi,
感謝 Max5020及版主的指導, 終於找到問題了
為保持各呼叫主程式的各別性, 我在主程式上下了公用外的指令 如
(GroupBox1.components[GroupBox1.FindComponent('Confirm').ComponentIndex] as TBitBtn).OnClick := ConfirmInsClick;
又Procedure ConfirmInsClick中下 Destroy, 造成Component('Confirm'), 已Free了, 但ConfirmInsClick, 還未完成
呼叫主程式改為下列方式即可

非常感謝 Max5020及版主的指導

procedure TForm1.Button2Click(Sender: TObject);
begin
If BG <> Nil Then
BG.Destroy;
BG := TEditGroupBox.Create(GroupBox1,'CustPanel.txt');
(GroupBox1.components[GroupBox1.FindComponent('Confirm').ComponentIndex] as TBitBtn).OnClick := ConfirmInsClick;
(GroupBox1.components[GroupBox1.FindComponent('Cancel').ComponentIndex] as TBitBtn).OnClick := CancelClick;
end;

procedure TForm1.CancelClick(Sender: TObject);
begin
// BG.Destroy;
GroupBox1.Visible := False;
end;
系統時間:2024-05-02 6:12:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!