这一个这样的dll外部调用函数。
procedure GetInfo( var totalBytes: integer; var sndPtr: pointer); stdcall;
这个sndPtr参数我应该给他一个怎样的变量?是不是定义:
 MyPtr : pointer;
这个MyPtr要不要给他分配内存空间,就算要也不知要分配多少呀?
这个函数的totalBytes返回了那个sndPtr指针的数据大小,以Byte计。
那我用怎样的操作可以把这个指针指向的数据读出来呀??
这样不行呀:
for i := 0 to totalbytes - 1 do
begin
  showmessage(inttostr(integer(sndPtr^)));
  inc(sndPtr) 
end;

解决方案 »

  1.   

    还有,这个函数会不会给sndPtr这个参数分配空间,那这个空间又要不要Free它,如何Free
      

  2.   

    这个问题你恐怕要直接找DLL的提供者问吧,sndPtr到底是返回一个什么类型的数据的指针
      

  3.   

    不管它是怎么类型不行吗?可以强制转换成我想要的指针类型 ,例如: PByte ,把每个字节读出来能行吗?问题就是不知怎样读出每个Byte的值!!就是如何控制指针指向下一个地址并把值读出来!
      

  4.   

    呵呵,原来只要定义一个BYTE的数组,然后Move一下就行了。
    var
     Buff : array of Byte;
     TotalBytes : integer;
     sndPtr : Pointer;
    begin
     GetInfo( totalBytes,sndPtr);
     SetLength(Buff,TotalBytes);
     Move(sndPtr^,Buff[0],TotalBytes);
     showmessage(Pchar(Buff));
    end;
    搞定!