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

Access violation at address ....

答題得分者是:P.D.
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-01-14 11:42:48 IP:211.21.xxx.xxx 訂閱
請問各位先進有關 Access violation at address 問題:

1. 環境 XE6 sql2012 dbexpress
2. 同樣的語法, 在 副程式 add_sal_pur_mnu_cat 執行到 mbdgt01_f.sqlquery1.Close; 會出現, Access violation at address ... 錯誤訊息,..., 但若寫在 Button3Click 中;則不會, 不知原因為何?
3. 為何在 副程式 coding 時, 一定要冠上, "mbdgt01_f" 才不會報錯, 如: mbdgt01_f.sqlquery1.Close; 但在 Button3Click 時, 則不需要?
4. 簡附程式如下:

謝謝!!!!

===
procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);

var
sql_str :string;
begin
// sql
sql_str := '';
if t_bdga04 <> '' then
begin
sql_str := 'insert into bdgm values(''' t_bdga04 ''',''test data'')';
mbdgt01_f.sqlquery1.Close;
mbdgt01_f.sqlquery1.SQL.Clear;
mbdgt01_f.sqlquery1.SQL.Add(sql_str);
mbdgt01_f.sqlquery1.ExecSQL;
end;
end;
procedure Tmbdgt01_f.Button4Click(Sender: TObject);
var
t1,t2,t3 :string;
begin
t1 := edit2.Text;
t2 := 'aa';
t3 := 'bb';
add_sal_pur_mnu_cat(t1,t2,t3);
end;
procedure Tmbdgt01_f.Button3Click(Sender: TObject);
var sql_str: string;
begin
sql_str := 'insert into bdgm values(''bdga14'',''test data'')';
sqlquery1.Close;
sqlquery1.SQL.Clear;
sqlquery1.SQL.Add(sql_str);
sqlquery1.ExecSQL;
end;
------
DVF
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-01-14 12:28:38 IP:221.120.xxx.xxx 訂閱
Mbdgt01 未被 Create
===================引 用 feng2939 文 章===================
請問各位先進有關 Access violation at address 問題:

1. 環境 XE6 sql2012 dbexpress
2. 同樣的語法, 在 副程式 add_sal_pur_mnu_cat 執行到 mbdgt01_f.sqlquery1.Close; 會出現, Access violation at address ... 錯誤訊息,..., 但若寫在 Button3Click 中;則不會, 不知原因為何?
3. 為何在 副程式 coding 時, 一定要冠上, "mbdgt01_f" 才不會報錯, 如: mbdgt01_f.sqlquery1.Close; 但在 Button3Click 時, 則不需要?
4. 簡附程式如下:

謝謝!!!!

===
procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);

var
sql_str :string;
begin
// sql
sql_str := '';
if t_bdga04 <> '' then
begin
sql_str := 'insert into bdgm values(''' t_bdga04 ''',''test data'')';
mbdgt01_f.sqlquery1.Close;
mbdgt01_f.sqlquery1.SQL.Clear;
mbdgt01_f.sqlquery1.SQL.Add(sql_str);
mbdgt01_f.sqlquery1.ExecSQL;
end;
end;
procedure Tmbdgt01_f.Button4Click(Sender: TObject);
var
t1,t2,t3 :string;
begin
t1 := edit2.Text;
t2 := 'aa';
t3 := 'bb';
add_sal_pur_mnu_cat(t1,t2,t3);
end;
procedure Tmbdgt01_f.Button3Click(Sender: TObject);
var sql_str: string;
begin
sql_str := 'insert into bdgm values(''bdga14'',''test data'')';
sqlquery1.Close;
sqlquery1.SQL.Clear;
sqlquery1.SQL.Add(sql_str);
sqlquery1.ExecSQL;
end;
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-01-14 14:28:23 IP:211.21.xxx.xxx 訂閱
謝謝 GandRuRu 解答,

我是用 MDI 的模式, 在主程式有下 mbdgt01_f := tmbdgt01_f.Create(application); 指令. 還是說要在 子程式 FormCreate , 再 Create 一次?
------
DVF
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-01-14 23:33:01 IP:59.120.xxx.xxx 未訂閱
1. 請問你的 procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
是宣告在那裡? PRIVATE, PUBLIC 或 IMPLEMEMTATION 下?

2. 我之前學習DELPHI時, 被前輩告知, 除了主FORM由 DELPHI自動CREATE外, 其他最好都自己創建(CREATE), 而且最好不要用 (APPLICATION), 改用 SELF 或 NIL
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-01-15 12:28:01 IP:211.21.xxx.xxx 訂閱
謝謝 P.D. 幫忙解答, 我的狀況如下:

1. procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);是宣告在 IMPLEMEMTATION 下, 而且一定要第一個 procedure 才行. 但若把它放到 PRIVATE 或 PUBLIC 中不行耶,會報錯. 還是我沒弄對?
2. 試了用 SELF 或 NIL 都不行, 狀況依舊...

===================引 用 P.D. 文 章===================
1. 請問你的 procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
是宣告在那裡? PRIVATE, PUBLIC 或 IMPLEMEMTATION 下?

2. 我之前學習DELPHI時, 被前輩告知, 除了主FORM由 DELPHI自動CREATE外, 其他最好都自己創建(CREATE), 而且最好不要用 (APPLICATION), 改用 SELF 或 NIL
------
DVF
blue
中階會員


發表:113
回覆:99
積分:52
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-02-25 16:15:39 IP:122.146.xxx.xxx 訂閱
Hi,您好:
若把它放到 PRIVATE 或 PUBLIC 中不行耶,會報錯 --> 若要放在 PRIVATE或 PUBLIC要加 TObject. (我不知是不是這樣稱呼),例如
procedure TForm1.add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
另,會出現 Access violation at address 的問題應該如 GrandRURU 所說 Mbdgt01 未被 Create
請先確認在 MDI 主程式是否確實被 Create,
謝謝!

===================引 用 feng2939 文 章===================
謝謝 P.D. 幫忙解答, 我的狀況如下:

1. procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);是宣告在 IMPLEMEMTATION 下, 而且一定要第一個 procedure 才行. 但若把它放到 PRIVATE 或 PUBLIC 中不行耶,會報錯. 還是我沒弄對?
2. 試了用 SELF 或 NIL 都不行, 狀況依舊...

===================引 用 P.D. 文 章===================
1. 請問你的 procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
是宣告在那裡? PRIVATE, PUBLIC 或 IMPLEMEMTATION 下?

2. 我之前學習DELPHI時, 被前輩告知, 除了主FORM由 DELPHI自動CREATE外, 其他最好都自己創建(CREATE), 而且最好不要用 (APPLICATION), 改用 SELF 或 NIL
feng2939
一般會員


發表:22
回覆:30
積分:15
註冊:2013-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-02-26 10:52:21 IP:211.21.xxx.xxx 訂閱
謝謝 blue 的解答,
1. 用了Tmbdgt01_f.add_sal_pur_mnu_cat , 不論是放在 private or public 依然報錯,

如建議的: procedure TForm1.add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);

2. 今天試了不用 MDI , 改用 Forms Application , 把 procedure 放在 implementation 之後, 功能是正常的

3.另謝謝及回覆未具名者, mbdgt01_f 確定是放在, interface 和 implementation之間.
全文如下:

經過看到,我個人覺得問題點在

mbdgt01_f

這個變數要放在

interface
區的下面

implementation
區的 上面


才會形成
全域變數 否則不同的unit下,是看不到那個變數的。當然也要記得use 那個含
mbdgt01_f 變數的unit

<===

謝謝大家的熱心幫助.



===================引 用 blue 文 章===================
Hi,您好:
若把它放到 PRIVATE 或 PUBLIC 中不行耶,會報錯 --> 若要放在 PRIVATE或 PUBLIC要加 TObject. (我不知是不是這樣稱呼),例如
procedure TForm1.add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
另,會出現 Access violation at address 的問題應該如 GrandRURU 所說 Mbdgt01 未被 Create
請先確認在 MDI 主程式是否確實被 Create,
謝謝!

===================引 用 feng2939 文 章===================
謝謝 P.D. 幫忙解答, 我的狀況如下:

1. procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);是宣告在 IMPLEMEMTATION 下, 而且一定要第一個 procedure‚ 才行.‚ 但若把它放到 PRIVATE 或 PUBLIC 中不行耶,會報錯. ‚ 還是我沒弄對?
2. 試了用 SELF 或 NIL 都不行, 狀況依舊...

===================引 用 P.D. 文 章===================
1. 請問你的 procedure add_sal_pur_mnu_cat(t_bdga04,t_bdga05,t_bdga06:string);
是宣告在那裡? PRIVATE, PUBLIC 或 IMPLEMEMTATION 下?

2. 我之前學習DELPHI時, 被前輩告知, 除了主FORM由 DELPHI自動CREATE外, 其他最好都自己創建(CREATE), 而且最好不要用 (APPLICATION), 改用 SELF 或 NIL
------
DVF
系統時間:2017-10-17 21:14:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!