VB代碼
函式宣告
private Declare Function WriteDataMulti Lib "VestoreForVb.dll" (sPointName() As String, ByRef dValue As Double, ByRef lTime As Long, ByVal lCount As Long) As Long
Dim lTag(2) As String
Dim lValue(2) As Double
Dim lTime(2) As Long
lTag(0) = "a"
lTag(1) = "b"
lTag(2) = "c"
lValue(0) = 123
lValue(1) = 234
lValue(2) = 345
lTime(0) = fCalDateLong(Now)
lTime(1) = fCalDateLong(Now)
lTime(2) = fCalDateLong(Now)
If WriteDataMulti(lTag(), lValue(0), lTime(0), 3) = 1 Then
MsgBox ("成功")
End If
在VB下呼叫正常
DELPHI代碼
function WriteDataMulti(sPointName:pointer;var dValue:double;var lTime:longint;lCount:longint):longint;stdcall;external libname;
lTag:array of string;
lValue:array of double;
lTime:array of longint;
并且用setlength對這三個陣列進行了賦值
Ret:=WriteDataMulti(@lTag, @lValue[0], @lTime[0], count);
結果報錯,提示Extenal exception E0607363這樣的錯誤,我已經檢查過這三個陣列均設好了正確的資料
懷疑宣告或呼叫不對,請大師指點,在線等。
uj5u.com熱心網友回復:
函式C++的原型是int _stdcall WriteDataMulti(SAFEARRAY **psPointName,double *dValue, long *lTime,long count)
大家幫我看看怎么呼叫才正常。
uj5u.com熱心網友回復:
uses WinApi.ActiveX;
function WriteDataMulti(var psPointName: PSafeArray; var dValue: double; var lTime: longint; count: longint): integer; stdcall; external 'VestoreForVb.dll';
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/34291.html
標籤:VCL組件開發及應用
下一篇:萌新加盟,求各位大大幫幫忙???
