请教各位,我将一个文件读入到一个pointer得缓冲区中,然后调用vc动态库得一个函数,该函数要传入longint得缓冲区地址,怎么实现?
下面是我得代码
function Tteladmin.PlayVoiceByPosition(var id, id1, path,
startposition: OleVariant): OleVariant;
var
mLength :longint;
pBuffer :Pointer;
mFile :File;
mTempFile :File;
begin
assignfile(mFile,path);
reset(mFile,1);
seek(mFile,longint((startposition-1)*8000));
mlength:=filesize(mFile);
mLength:=mLength-longint((startposition-1)*8000); assignfile(mTempFile,'e:\temp.voc');
rewrite(mTempFile,1);
GetMem(pBuffer,mLength);
blockread(mFile,pBuffer^,mLength);
blockwrite(mTempFile,pBuffer^,mLength);
closefile(mFile);
closefile(mTempFile);
stoprp(id);
playmem(id,integer(pinteger(@pBuffer^)),mlength); //调用playmem函数来播放内存区域,怎么总是传不过去????
freemem(pBuffer);
end;
playmem的得delphi声明为:
function PlayMem(No:SmallInt;MemPtr,MemSize:LongInt):SmallInt; stdcall;external 'kkkk.dll' ;
在线等待!!急!!
下面是我得代码
function Tteladmin.PlayVoiceByPosition(var id, id1, path,
startposition: OleVariant): OleVariant;
var
mLength :longint;
pBuffer :Pointer;
mFile :File;
mTempFile :File;
begin
assignfile(mFile,path);
reset(mFile,1);
seek(mFile,longint((startposition-1)*8000));
mlength:=filesize(mFile);
mLength:=mLength-longint((startposition-1)*8000); assignfile(mTempFile,'e:\temp.voc');
rewrite(mTempFile,1);
GetMem(pBuffer,mLength);
blockread(mFile,pBuffer^,mLength);
blockwrite(mTempFile,pBuffer^,mLength);
closefile(mFile);
closefile(mTempFile);
stoprp(id);
playmem(id,integer(pinteger(@pBuffer^)),mlength); //调用playmem函数来播放内存区域,怎么总是传不过去????
freemem(pBuffer);
end;
playmem的得delphi声明为:
function PlayMem(No:SmallInt;MemPtr,MemSize:LongInt):SmallInt; stdcall;external 'kkkk.dll' ;
在线等待!!急!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货