各位大哥大姐,小弟刚接触delphi,现在要将一个VB小程序转化为delphi,遇到了麻烦,请个问帮忙,谢谢!
怎么将下面VB代码转化为dilphi:
Public Declare Function CAN_Init Lib "ancd.dll" (ByVal iIndex As Long, ByRef config As Any) As Boolean谢谢!

解决方案 »

  1.   

    主要是delpi中怎么实现vb的按值(ByVa)和按地(ByRef )址传递数据。
      

  2.   

    VB:
    Public Declare Function CAN_Init Lib "ancd.dll" (ByVal iIndex As Long, ByRef config As Any) As Booleandelphi:
    function CAN_Init(const iIndex:Integer;VAR config:Point):boolean;stdcall;external 'ancd.dll';as any ?是不是指所有数据类型?
      

  3.   

    dinglinger(红辣椒),谢谢您!
    As Any 来禁止类型检查,从而允许将任意数据类型传递给该过程。
      

  4.   

    VB代码如下:           
                  Dim canbuff(13) As Byte                
                   canconfig(0) = btr0
                   canconfig(1) = btr1
                    canconfig(2) = acr(0)
                    canconfig(3) = acr(1)
                    canconfig(4) = acr(2)
                    canconfig(5) = acr(3)
                    canconfig(6) = amr(0)
                    canconfig(7) = amr(1)
                    canconfig(8) = amr(2)
                    canconfig(9) = amr(3)
                    'canconfig(10) = 0
                   If CAN_Init(mindex, canconfig(0)) Then
                    Label23.Caption = "初始化成功,可以进行测试了"  。
      。
      。
      

  5.   

    //try
    function CAN_Init(const iIndex: Integer; const config): Boolean; stdcall; external 'ancd.dll';var
      canbuff: array[0..12] of Byte;
      mindex: Integer;
    begin
      mindex := 1;
      canbuff[0] := 0;
      canbuff[1] := 1;
      //....acr\amr\btr0不知道怎么定义的?
      CAN_Init(mindex, canbuff[0]);
    end;
      

  6.   

    zswang(伴水清清)(专家门诊清洁工)  您好,VB中acr\amr\btr0的定义如下,谢谢!
    Public acr(4), amr(4)  As Byte
    Public btr0, btr1 As Byte
      

  7.   

    可以把VB中canconfig各个值打印出来
    Delphi照着赋值
    先看看调用是否正常
      

  8.   

    zswang(伴水清清)(专家门诊清洁工) ,您好!
    function CAN_Init(const iIndex: Integer; const config): Boolean; stdcall; external 'ancd.dll';按上面这个做是好使用的,谢谢您!
      

  9.   

    function CAN_Init(const iIndex: Integer; const config): Boolean; stdcall; external 'ancd.dll';var
      canbuff: array[0..12] of Byte;
    begin
      CAN_Init(mindex, canbuff[0]);
    end;