VB程序员博客

VB程序开发

下面的是dll中函数,在用vb调用它是在参数的类型上还有什么要变化的吗?我按照函数要求的类型调用后老运行到该函数时出现错误,是不c语言中long和double要在vb中定义位其他格式啊?请高手指点指点!!!我的vb程序上实在是找不出什么错误,高手帮忙谢谢!!
bool WtSys_GetData(int VehicleID ,int TransNum ,long GrossWeight,int AxisCount, double Speed,double Acceleration, int Direction)
参数: int VehicleID (缓存的车辆序号(1、2、…));
返回值:
int TransNum (流水号);
long GrossWeight (总重);
int AxisCount (轴组数);
double Speed (速度);
double Acceleration (加速度);
int Direction (行驶方向 0—正常行驶 1—倒车);

true 取数据成功;
false 取数据失败。

vb调用程序如下:
Private Declare Function WtSys_GetData Lib "C:WtSys_Dll.dll" _
(ByVal VehicleID As Integer, ByVal TransNum As Integer, _
ByVal GrossWeight As Long, ByVal AxisCount As Integer, _
ByVal Speed As Double, ByVal Acceleration As Double, _
ByVal Direction As Integer) As Boolean

WtSys_GetData VehicleID, TransNum, GrossWeight, AxisCount, Speed, Acceleration, Direction
Text1.Text = Text1.Text & "流水号:" & TransNum & vbCrLf
Text1.Text = Text1.Text & 总重:" & GrossWeight & vbCrLf
Text1.Text = Text1.Text & "轴组数:" & AxisCount & vbCrLf
Text1.Text = Text1.Text & "速度:" & Speed & vbCrLf
Text1.Text = Text1.Text & 加速度:" & Acceleration & vbCrLf
Text1.Text = Text1.Text & "方向:" & Direction & vbCrLf

太感谢了,问题解决了,真是高手啊!!再次感谢!
您能说一下什么时候用byval和byref吗?通过什么来判断用哪一个?

输入参数一般是通过传值,所以用 Byval;输出参数必须传址(指针),所以用 Byref(但字符串例外,因为 VB 的字符串传的已经是指针,用 ByVal)。

我上面代码中仅仅是猜测。在 C 代码中应该对指针加 * 号的,一看便知。

好!谢谢你!明白了,呵呵


标签: , , ,