首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

acm

2012-04-04 
求助 acmprocedureTForm2.ACMWaveIn1Data(data:Pointersize:Integer)varmdata:array[1..10000]ofchark:

求助 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;

把缓冲区清零。

播放端最好是开一个接收缓冲区,当缓冲区中有足够的数据时,才播放。

热点排行