呼叫 AppServer 端的 Method 時 Access Violation |
答題得分者是:jieshu
|
Diviner
初階會員 ![]() ![]() 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
我接通了 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 發送簡訊給我 |
引言: 我接通了 TSocketConnection, 但呼叫 AppServer 端的 Method 時 Access Violcation. 程式碼如下:請直接用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/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. 請幫忙, 謝謝. -- 小卜子
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
Diviner
初階會員 ![]() ![]() 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
Diviner
初階會員 ![]() ![]() 發表:36 回覆:112 積分:34 註冊:2002-03-13 發送簡訊給我 |
|
jieshu
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 啊, 我明白了, 我的 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 發送簡訊給我 |
引言: 我只知道型態不同, AppServer是Variant, GetServer是IAppServer, 如果有興趣可將Help讀熟, 也許可再試試AppSvr := IrdmPatternKey(SocketConnection1.GetServer);是否行的通.試過了, GetServer 也行得通; 另外, 我使用了 IrdmPatternKeyDisp 來宣告 AppServer 物件, 因為用 Variant 未能讓 Compile 發現我錯誤地使用它 Method, 但用 Interface 則可因 Strong Type 而告知 Compile error. -- 小卜子
------
-- 小卜子 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |