赛
赛特
Unregistered / Unconfirmed
GUEST, unregistred user!
我是这样作记号的:
var
w: TWaveHeader;
//头文件record
tmpFS:TfileStream;
Source:String;
//WAV 路径
mark:String;
//记号
begin
mark:='ABC';
Source:=ExtractFilePath(paramstr(0))+ 'Temp.wav';
w:=getWaveHeader(Source);
w.rLen:=w.rLen + Length(mark);
w.wSampleLength:=w.wSampleLength + Length(mark);
tmpFS := TFileStream.create(Source, fmOpenReadWrite);
try
tmpFS.Write(w, SizeOf(w));
//更改头文件部分信息
tmpFS.Seek(0, soFromEnd);
//在当前录制位置,也就是最后,作记号
tmpFS.Write(PChar(mark)^, Length(mark));
finally
tmpFS.Free;
end;
end;
而如果继续录制,则先 MediaPlayer1.StartPos:=MediaPlayer1.Length;
播放时,就可以先找到记号处,再播放。但按我这样作记号,mark的位置为什么会改变呢?如果改变了,肯定就不能实现要的目的了。(我说的改变是,比如我是在tmpFS.Position为1000时作了记号,然后接着录音。这时如果查找记号,发现它的position变了。如果再录,它还会变)。该如何解决这个问题啊!!!万分感谢!!!!
var
w: TWaveHeader;
//头文件record
tmpFS:TfileStream;
Source:String;
//WAV 路径
mark:String;
//记号
begin
mark:='ABC';
Source:=ExtractFilePath(paramstr(0))+ 'Temp.wav';
w:=getWaveHeader(Source);
w.rLen:=w.rLen + Length(mark);
w.wSampleLength:=w.wSampleLength + Length(mark);
tmpFS := TFileStream.create(Source, fmOpenReadWrite);
try
tmpFS.Write(w, SizeOf(w));
//更改头文件部分信息
tmpFS.Seek(0, soFromEnd);
//在当前录制位置,也就是最后,作记号
tmpFS.Write(PChar(mark)^, Length(mark));
finally
tmpFS.Free;
end;
end;
而如果继续录制,则先 MediaPlayer1.StartPos:=MediaPlayer1.Length;
播放时,就可以先找到记号处,再播放。但按我这样作记号,mark的位置为什么会改变呢?如果改变了,肯定就不能实现要的目的了。(我说的改变是,比如我是在tmpFS.Position为1000时作了记号,然后接着录音。这时如果查找记号,发现它的position变了。如果再录,它还会变)。该如何解决这个问题啊!!!万分感谢!!!!