有一C程序如下:
int abc(int icdev,unsigned char _SecNr,unsigned char *_A,unsigned char _B0,unsigned char _B1,unsigned char _B2,unsigned char _B3,unsigned char _Bk,unsigned char *_B);参 数:icdev:通讯设备标识符
       _SecNr:扇区号(0~15)
       _KeyA:密码A
       _B0:块0控制字,低3位(D2D1D0)对应C10、C20、C30
       _B1:块1控制字,低3位(D2D1D0)对应C11、C21、C31
       _B2:块2控制字,低3位(D2D1D0)对应C12、C22、C32
       _B3:块3控制字,低3位(D2D1D0)对应C13、C23、C33
       _Bk:保留参数,取值为0
       _KeyB:密码B
例:int st;
unsigned char a;
unsigned char b;
memset(keya,0xff,6);
memset(keyb,0xff,6);
st=abc(icdev,a,0x00,0x00,0x00,0x01,0,b);问:delphi中如何实现。
 

解决方案 »

  1.   

    我做了如下尝试,失败,请高手指点!
    var
      Adr,B0,B1,B2,B3,BK:Char;
      A,B:pchar;
    begin
      A:='dddddddddddd';
      B:='ffffffffffff';
      Adr:=#10;
      B0:=#07;
      B1:=#07;
      B2:=#07;
      B3:=#03;
      BK:=#69;
      st:=abc(dev,adr,A,B0,B1,B2,B3,BK,B);
      

  2.   

    声明
    function abc(dev:longint;Adr:char;A:pchar;B0,B1,B2,B3:char;Bk:char;B:pchar):smallint;stdcall;far;external 'test.dll' name 'abc';调用是成功的,主要是:
    _SecNr:扇区号(0~15)
           _KeyA:密码A
           _B0:块0控制字,低3位(D2D1D0)对应C10、C20、C30
           _B1:块1控制字,低3位(D2D1D0)对应C11、C21、C31
           _B2:块2控制字,低3位(D2D1D0)对应C12、C22、C32
           _B3:块3控制字,低3位(D2D1D0)对应C13、C23、C33
           _Bk:保留参数,取值为0
           _KeyB:密码Bst=abc(icdev,a,0x00,0x00,0x00,0x01,0,b);
    中,如果C1x=1,C2x=0,C3x=0的话,B0等应该付什么值