如何用VB傳入字串陣列給delphi開發的dll |
缺席
|
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
煩請大大幫忙看一下
我有一個dll是用delphi開發的,
呼叫的時候需要傳入一個字串陣列,
但是如果要用VB呼叫的話,
要怎麼傳入??
目前的寫法是
delphi
------------------------------------------
function SetCardData(readerName:PChar ;cardData:Array of string):integer;stdcall; ...內容省略... [/cpde] VB6 -------------------------- 宣告 ----------------------------在VB6中一執行就掛點.... 發表人 - cliffdean 於 2005/01/28 12:52:17Public Declare Function SetCardData _ Lib "fs_card.dll" _ ( _ ByVal readerName As String, _ ByVal cardData As Variant _ ) As Variant呼叫 ---------------------------------- [code] Dim writeData(10) As String Dim readerName As String Dim ErrorCode As Integer readerName = Combo1.List(Combo1.ListIndex) For i = 0 To 9 writeData(i) = Left(cardData(i).Text, 23) Next ErrorCode = SetCardData(readerName, writeData) |
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
我另外也試過
delphi改成
Type myDataType = Array[0..9] of string; function SetCardData(readerName:PChar ;var cardData : myDataType):integer;stdcall;然後VB改成 -------------------------- 宣告 ---------------------------- Public Declare Function SetCardData _ Lib "fs_card.dll" _ ( _ ByVal readerName As String, _ ByRef cardData As String _ ) As Variant 呼叫 ---------------------------------- Dim writeData(9) As String Dim readerName As String Dim ErrorCode As Integer readerName = Combo1.List(Combo1.ListIndex) For i = 0 To 9 writeData(i) = Left(cardData(i).Text, 23) Next ErrorCode = SetCardData(readerName, writeData[0])也是不行 |
cliffdean
一般會員 發表:9 回覆:14 積分:4 註冊:2004-12-07 發送簡訊給我 |
結果自己解決了,方法如下
delphi
------------------------------------------
function SetCardData(readerName:PChar ;cardData:variant):integer;stdcall; var cardDatas : array of string; begin cardDatas := cardData; ...內容省略... end;vb宣告 ------------------------ Public Declare Function SetCardData _ Lib "fs_card.dll" _ ( _ ByVal readerName As String, _ ByVal cardData As Variant _ ) As Variant呼叫 ---------------------------------- Dim writeData(9) As String Dim readerName As String Dim ErrorCode As Integer readerName = Combo1.List(Combo1.ListIndex) For i = 0 To 9 writeData(i) = Left(cardData(i).Text, 23) Next ErrorCode = SetCardData(readerName, writeData)*可惜自己不能給自己分-- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |