求助 acm
procedure TForm2.ACMWaveIn1Data(data: Pointer; size: Integer);
var
mdata:array[1..10000] of char;
k:integer;
begin
for k:=1 to size do
mdata[k]:=pchar(dword(data)+k-1)^;
idc.SendBuffer(mdata,size);
end;
程序运行到这里出现 access viotion at0x00458496:write of address 0x00130000
错误
[解决办法]
procedure TForm2.ACMWaveIn1Data(data: Pointer; size: Integer);
var
mdata:array[1..10000] of char;
k:integer;
begin
// for k:=1 to size do
// mdata[k]:=pchar(dword(data)+k-1)^;
Move(data^,mdata[1],size);
//idc.SendBuffer(mdata,size);
idc.SendBuffer(mdata[1],size);
end;
[解决办法]
procedure TForm2.ACMWaveIn1Data(data: Pointer; size: Integer);
var
mdata:array[1..10000] of char;
k:integer;
begin
// for k:=1 to size do
// mdata[k]:=pchar(dword(data)+k-1)^;
//mdata装的随机,初始化成0
FillChar(mdata[1],10000,0);
Move(data^,mdata[1],size);
//idc.SendBuffer(mdata,size);
idc.SendBuffer(mdata[1],size);
end;
把缓冲区清零。
播放端最好是开一个接收缓冲区,当缓冲区中有足够的数据时,才播放。