以下是完整的代码:
procedure TForm1.btnFileClick(Sender: TObject);
begin
if (FileStream = nil) and OpenDialog.Execute then
begin
FileStream := TFileStream.Create(OpenDialog.FileName,fmOpenRead);
MemStream := TMemoryStream.Create; MemStream.Size := FileStream.Size;
CopyData(AudioPlayer.NumBuffers*AudioPlayer.BufferSize); AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8); SliderPosition.MaxValue := AudioPlayer.FileLength;
SliderPosition.Position := 0;
btnPlay.Enabled := True;
end;
end;其中
AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8);
这句我改为AudioPlayer.FileName := 'c:\windows\hello.mp3'也行,也就是说fileName要求输入含路径的文件名即可。可上述代码是什么意思呢?另:
AudioPlayer是一个可以播放wav,MP3等文件的vcl
procedure TForm1.btnFileClick(Sender: TObject);
begin
if (FileStream = nil) and OpenDialog.Execute then
begin
FileStream := TFileStream.Create(OpenDialog.FileName,fmOpenRead);
MemStream := TMemoryStream.Create; MemStream.Size := FileStream.Size;
CopyData(AudioPlayer.NumBuffers*AudioPlayer.BufferSize); AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8); SliderPosition.MaxValue := AudioPlayer.FileLength;
SliderPosition.Position := 0;
btnPlay.Enabled := True;
end;
end;其中
AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8);
这句我改为AudioPlayer.FileName := 'c:\windows\hello.mp3'也行,也就是说fileName要求输入含路径的文件名即可。可上述代码是什么意思呢?另:
AudioPlayer是一个可以播放wav,MP3等文件的vcl
解决方案 »
- advstringgrid1.row 赋值
- 向各位API高手请教了,
- 我数学不好,学编程感觉没信心
- 如何使用两个DateTimePicker访问sqlserver数据库
- 如何做个空的XP服务程序,任务管理器杀不掉就行了。
- 急救,请问怎样可以设打印机为空????
- 请问在什么地方能够查到主板的型号?装U盘驱动不上?
- 救命啊!为什么我一打开CSDN的问题就出错!好几天了,以前只是偶尔裸奔一下.
- 怎样让opendialog可以多选文件
- 我开发了一个软件,不知怎么出手,请大家指点。
- 高手请进,怎么样保存MDI中的子窗体childform,在运行中把它当成一个文件再次打开?
- 北京的,都可以来瞧一下,来则有分‘’‘’
procedure TForm1.CopyData(nBytes: Longint);
begin
try
nBytes := Min(nBytes,FileStream.Size-FileStream.Position);
MemStream.CopyFrom(FileStream,nBytes);
except
// no exception please
end;
end;
可惜我的控件是FOR DELPHI3的,我没法在D5里用.源码太多,我只看了一点,所以也不太清楚.
基本上,你可以跟一下SETFILENAME,这里面对文件名作检查,如果是视频文件就将其读入内存.上面的例子先将文件读入内存,再将内存地址赋给文件名,效果应该是一样的. 'POINTER://'这个符号应该是他自己定义的,表示后面是指向内存的指针.这样做的好处,我想就是可以直接指定内存而不需要文件名,比如你以自己的数据结构存储的视频数据,可以读入内存然后播放.
以上的意见不知能不能给你一点帮助.
我用的MMTools构件组是1.08版的,既无帮助文件,又没有源代码,你的源码是从哪里下的?