上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 樓
|
|
回頂端 |
|
 |
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 |
|
回頂端 |
|
 |
|