vc dll中某个函数的参数是byte型指针,
delphi中调用时,
...
pBitmapImage : Pointer;
...
GetMem(pBitmapImage, ImageSize);但dll中的函数参数引用pBitmapImage时类型不匹配(Pointer不匹配byte),
如何转换???

解决方案 »

  1.   

    GetMem(byte(pBitmapImage), ImageSize);
      

  2.   

    function SetPicture(var pBuf: Byte):Boolean;stdcall;external 'Actpicture.dll'; ...
    var
      pBitmapHeader: pBitmapInfo;
      pBitmapImage : Pointer;
      HeaderSize  : DWORD;
      ImageSize   : DWORD;
    begin
      GetDIBSizes(AmmeterBmp.Handle, HeaderSize, ImageSize);
      GetMem(pBitmapImage, ImageSize);
      try
        if SetReconisePicture(pBitmapImage)) then   //括号内类型不匹配
        begin
          showmessage('加载图片成功!')
        end
        else begin
          showmessage('加载图片失败!');
        end;
      finally
        FreeMem(pBitmapImage);
      end;
      

  3.   

    Pointer在win32里是32位的。 而你的byte是8位的如果赋值当然不相配了。关键那个参数到底是byte还是指向byte的指针如果是byte当然不行。 但如果是指向byte的指针那应该可以的呀。
      

  4.   

    上面的有点小错误!function SetPicture(var pBuf: Byte):Boolean;stdcall;external 'Actpicture.dll'; ...
    var
      pBitmapHeader: pBitmapInfo;
      pBitmapImage : Pointer;
      HeaderSize  : DWORD;
      ImageSize   : DWORD;
    begin
      GetDIBSizes(AmmeterBmp.Handle, HeaderSize, ImageSize);
      GetMem(pBitmapImage, ImageSize);
      try
        if SetPicture(pBitmapImage)) then   //括号内类型不匹配
        begin
          showmessage('加载图片成功!')
        end
        else begin
          showmessage('加载图片失败!');
        end;
      finally
        FreeMem(pBitmapImage);
      end;还是搞不定啊!!!
      

  5.   

    SetPicture(Byte(pBitmapImage)) 
    至于结果就不知道了。