delphi是有BYTE类型的,和VC的一样,unsigned 8-bitvar Buffer: Pchar;
begin
  GetMem(Buffer, Size);
  然后将Buffer传给strCard

解决方案 »

  1.   

    我是这样声明的:
    interface
    function IssueCard(var Name:array of Byte):integer;StdCall;implementationconst
        W_DLL       ='wdll2000.dll';function IssueCard;external W_DLL;用以下方式调用:
    var
        SerialNo:array[0..10] of Byte;
    begin
        IssueCard(SerialNo);
    end;
    可是会出错
      

  2.   

    你可以使用PChar或是PByte,但PByte初始化是需要分配内存,GetMem(buff, 100),一般都使用PChar。
      

  3.   

    这样声明:
    function IssueCard(var Name:PChar):integer;StdCall;
    这样使用:
    var
        a:array[0..10] of char;
        SerialNo:PChar;
    begin
        SerialNo:=@a;
        IssueCard(SerialNo)
    end;
    也不对.
      

  4.   

    Delphi在运行IssueCard(SerialNo)时出现,“access violation”错误
      

  5.   

    你的参数式输入还是输出的?
    如果是输入的,那么使用PBYTE类型!!
    如果是输出的,那么使用BYTE类型!!
      

  6.   

    用PChar有什么问题吗?
    不都是字节型的!
      

  7.   

    既然他声明成一个指针,我就用指针,这没有错呀!
    一般Delphi出现access violation提示时,是因为访问了一个不存在的地址造成的,可是我明明用a:array[0..10] of char;声明过空间了,奇怪...
      

  8.   

    用C++调用没有问题:
        BYTE nmbCard[10];
        IssueCard((BYTE*)nmbCard);
      

  9.   

    在C++中的声明:
    extern "C" AFX_EXT_API int  WINAPI IssueCard(BYTE *strCard);各位高手:在Delphi中如何定义 BYTE *strCard 指针?????????????????????
      

  10.   

    正如Delphi_Li(Delphi Li)所言,如果是输入的,那么使用PBYTE类型!!
    所以可以试试function IssueCard(PBYTE strCard): Integer; stdcall; external 'Your_Dll_Name';又如 gfzhx(小小) 所言,PByte初始化是需要分配内存