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

呼叫 AppServer 端的 Method 時 Access Violation

答題得分者是:jieshu
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-02 18:23:51 IP:202.82.xxx.xxx 未訂閱
我接通了 TSocketConnection, 但呼叫 AppServer 端的 Method 時 Access Violcation.    程式碼如下:
var
  AppSvr: IrdmPatternKey;
  NextKey: OleVariant;
begin
  SocketConnection1.Address := '192.168.1.18';
  SocketConnection1.ServerName := 'TestAppSvr.rdmPatternKey';
  SocketConnection1.ServerGUID := '{D8459CFB-41AC-428B-8BBB-471FA0879A57}';
  SocketConnection1.Open;      AppSvr := IrdmPatternKey(IDispatch(SocketConnection1.AppServer)); // 接通了
//  AppSvr := IrdmPatternKey(IDispatch(SocketConnection1.GetServer));      AppSvr.Hello; // 出現 Access Violation, 但 AppSvr 非 Nil
end;
首先想請教一下, 用 AppServer 與 GetServer 有甚麼分別呢? 我的狀況是, 當使用 AppServer 那一句時, Access Violation 的 Address 是 00000000, 而使用 GetServer 時, Access Violatin 的 Address 是有數值的; 接通 AppServer 時, AppServer 程式是會跳出來的, 該是真的接通了; 但我放一個 Break point 在 AppServer 內的 Hello method 時, 發覺程式沒走到過那裡。 只是 Client side 就出了 Access Violation. 請幫忙, 謝謝. -- 小卜子
------
--
小卜子
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-02 18:41:45 IP:203.204.xxx.xxx 未訂閱
引言: 我接通了 TSocketConnection, 但呼叫 AppServer 端的 Method 時 Access Violcation. 程式碼如下:
var
  AppSvr: IrdmPatternKey;
  NextKey: OleVariant;
begin
  SocketConnection1.Address := '192.168.1.18';
  SocketConnection1.ServerName := 'TestAppSvr.rdmPatternKey';
  SocketConnection1.ServerGUID := '{D8459CFB-41AC-428B-8BBB-471FA0879A57}';
  SocketConnection1.Open;      AppSvr := IrdmPatternKey(IDispatch(SocketConnection1.AppServer)); // 接通了
//  AppSvr := IrdmPatternKey(IDispatch(SocketConnection1.GetServer));      AppSvr.Hello; // 出現 Access Violation, 但 AppSvr 非 Nil
end;
首先想請教一下, 用 AppServer 與 GetServer 有甚麼分別呢? 我的狀況是, 當使用 AppServer 那一句時, Access Violation 的 Address 是 00000000, 而使用 GetServer 時, Access Violatin 的 Address 是有數值的; 接通 AppServer 時, AppServer 程式是會跳出來的, 該是真的接通了; 但我放一個 Break point 在 AppServer 內的 Hello method 時, 發覺程式沒走到過那裡。 只是 Client side 就出了 Access Violation. 請幫忙, 謝謝. -- 小卜子
請直接用SocketConnection1.AppServer.Hello;看可不可以. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-02 19:37:45 IP:202.82.xxx.xxx 未訂閱
果然可以啊, 我錯了哪裏? -- 小卜子
------
--
小卜子
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-02 19:46:39 IP:202.82.xxx.xxx 未訂閱
啊, 我明白了, 我的 AppSvr 該用 Variant 而錯用了 IrdmPatternKey, 所以就出問題了。 那麼, 其實 GetServer 與 AppServer 有何分別呢? -- 小卜子
------
--
小卜子
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-02 22:15:33 IP:61.70.xxx.xxx 未訂閱
引言: 啊, 我明白了, 我的 AppSvr 該用 Variant 而錯用了 IrdmPatternKey, 所以就出問題了。 那麼, 其實 GetServer 與 AppServer 有何分別呢? -- 小卜子
我只知道型態不同, AppServer是Variant, GetServer是IAppServer, 如果有興趣可將Help讀熟, 也許可再試試AppSvr := IrdmPatternKey(SocketConnection1.GetServer);是否行的通. <iFrame src="http://www.coss.com.tw/jieshu/sign.htm" width=400 height=105 scolling="NO" border="0"></iFrame> 震江系統(股)公司: http://www.coss.com.tw/ 捷舒軟體設計坊: http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-03 13:06:57 IP:202.82.xxx.xxx 未訂閱
引言: 我只知道型態不同, AppServer是Variant, GetServer是IAppServer, 如果有興趣可將Help讀熟, 也許可再試試AppSvr := IrdmPatternKey(SocketConnection1.GetServer);是否行的通.
試過了, GetServer 也行得通; 另外, 我使用了 IrdmPatternKeyDisp 來宣告 AppServer 物件, 因為用 Variant 未能讓 Compile 發現我錯誤地使用它 Method, 但用 Interface 則可因 Strong Type 而告知 Compile error. -- 小卜子
------
--
小卜子
系統時間:2024-04-25 9:17:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!