许久没搞DELPHI了,有个小程序,厂家给了C#的声明,翻译过来忘记了,有些类型,万能的群友帮下忙
        [DllImport("RdCard.dll")]
        extern static int UCommand1(System.Byte[] pCmd, ref int parg0, ref int parg1, ref int parg2);这样声明function UCommand(pCmd: PByte; var Parg0: Integer; var Parg1: Integer; var Parg2: Integer): Integer; stdcall; external 'RdCard.dll';
TByte = array[0..0] of Byte;     这样声明pbyte不对吗?

解决方案 »

  1.   

    function TForm1.InitCom(nPort: Integer; out Msg: string): BOOL;
    var
      cmd: array of Byte;
      para0, para1, para2: Integer;
      ret: Integer;
    begin
      SetLength(cmd, 1);
      cmd[0] := $41;
      para0 := 0;
      para1 := 8811;
      para2 := 9986;  ret := UCommand(@cmd, para0, para1, para2);  if (ret = 62171)or(ret = -5)or(ret = -7) then
      begin
        Msg := 'success';
        Result := True;
        //Timer1.Enabled := True;
      end else
      begin
        Msg := 'false';
        Result := False;
      end;
    end;这样调用不对吗
      

  2.   

    ret := UCommand(@cmd[0], para0, para1, para2);
    另外,Pascal支持合并同类声明:
    function UCommand(pCmd: PByte; var Parg0, Parg1, Parg2: Integer): Integer; stdcall; external 'RdCard.dll';