[VB6 ] dll回傳值抓不到

看板Visual_Basic作者 (caspermin)時間13年前 (2010/11/19 15:30), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/1
以下c程式做buffer用 int ReadBuffer(int Num) { if ( Num >= 0 && Num < 40 ) return (int)buf[Num]; else return 0x01; } // Func : Read Buffer VB程式宣告為 Private Declare Function ReadBuffer Lib "xxx" (ByVal Num As Long) As Long Private Sub Timer1_Timer() Dim a As Long Dim Num As Long Dim ReadBuffer(40) As Long a = ReadBuffer(Num) Text1.Text = a End Sub c程式buffer範圍內會回傳為十進制的值,若不在範圍內會回傳為1 但當我的Timer啟動後text所顯示的一直是0,但無任何的錯誤訊息 請問有可能是甚麼原因導致沒有收到c的回傳值? 或是程式哪裡有問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.241.189

11/19 23:46, , 1F
readbuffer被你拿去宣告成陣列
11/19 23:46, 1F

11/20 19:33, , 2F
不好意思~不太明白您的意思??
11/20 19:33, 2F

11/20 19:35, , 3F
可否說明要如何修改才能讀到值<(_ _)>
11/20 19:35, 3F

11/21 11:59, , 4F
Function name 和內部陣列的名字一樣了。
11/21 11:59, 4F

11/21 14:27, , 5F
不是依照VB呼叫dll的方式應該是要設一樣的名稱
11/21 14:27, 5F

11/21 19:48, , 6F
Dim ReadBuffer(40) As Long 這行砍掉
11/21 19:48, 6F

11/21 19:48, , 7F
你外面已經宣告dll的函式,就已經可以直接使用
11/21 19:48, 7F

11/21 19:49, , 8F
在sub裡面宣告跟外面重複的函式名稱,自然就被sub宣告
11/21 19:49, 8F

11/21 19:50, , 9F
的陣列蓋掉,你a = ReadBuffer(Num)就等於從陣列取值
11/21 19:50, 9F

11/22 21:12, , 10F
你是說程式sub ReadBuffer
11/22 21:12, 10F

11/22 21:13, , 11F
裡面 a = ReadBuffer(Num)
11/22 21:13, 11F

11/22 21:14, , 12F
最後End結束這樣嗎?
11/22 21:14, 12F
文章代碼(AID): #1CvYU11j (Visual_Basic)