VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

傳陣列的參考到DLL裡的FUNCTION

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
stan007



註冊時間: 2005-10-11
文章: 7


第 1 樓

發表發表於: 星期四 十一月 12, 2009 10:57 am    文章主題: 傳陣列的參考到DLL裡的FUNCTION 引言回覆

請教各位前輩先進
以下是在下寫的AA.DLL及BB.PRG內容
AA.DLL內容如下:
DEFINE CLASS TEST AS custom olepublic
FUNCTION AAA(ARR)
ARR[2] = 'B'
ENDFUNC
ENDDEFINE
----------------------
BB.PRG內容如下:
DIME XARR[2]
STOR 'A' TO XARR
CC = CREATEOBJECT('AA.TEST')
=CC.AAA(@XARR)
----------------------
理論上,執行後的XARR[2]結果應該等於'B'
但是XARR[2]卻依然保持'A'
若是將FUNCTION AAA寫在PRG裡,就一切正常
有哪位前輩先進能幫在下解答嗎??
回頂端
檢視會員個人資料 發送私人訊息
stan007



註冊時間: 2005-10-11
文章: 7


第 2 樓

發表發表於: 星期四 十一月 12, 2009 3:41 pm    文章主題: 引言回覆

這個好像是只有陣列會這樣,如果傳過去的變數
AA.DLL改成
DEFINE CLASS TEST AS custom olepublic
FUNCTION AAA(ARR)
ARR = 'B'
ENDFUNC
ENDDEFINE
------------------
BB.PRG改成
STOR 'A' TO XARR
CC = CREATEOBJECT('AA.TEST')
=CC.AAA(@XARR)
------------------
那XARR值就會變成'B',這結果很合理
但是一旦變成陣列就又不行.......
還是在下的寫法不對,有前輩高手指教一下小弟嗎
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 3 樓

發表發表於: 星期四 十一月 12, 2009 5:20 pm    文章主題: 引言回覆

我是沒用過這種dll,
幫你在google 找到 http://support.microsoft.com/kb/188255
也可以去查 help 裡的 COMARRAY( ) 函數
希望這些資訊對你有幫助.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
stan007



註冊時間: 2005-10-11
文章: 7


第 4 樓

發表發表於: 星期四 十一月 12, 2009 6:13 pm    文章主題: 引言回覆

非常感謝garfield
只要在DIME下面加上COMARRAY()就可以了
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 5 樓

發表發表於: 星期六 十一月 14, 2009 12:06 am    文章主題: 引言回覆

我記得公司內高手說過
DLL內的陣列和vfp的陣列起始不同
vfp的陣列開始為1,dll是0
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作