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
错误

解决方案 »

  1.   

    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;
      

  2.   

    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;把缓冲区清零。播放端最好是开一个接收缓冲区,当缓冲区中有足够的数据时,才播放。