高分求解菜鸟问题!!!!!!!!!!!!!

商雁 2001-06-11 10:55:00
AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8);
这是MMtools控件组中的一个例程的一个语句,FileName属性是要求输入一个可以包含路径的文件名,如‘c:\windows\hello.mp3',但这个语句却是给FileName赋了这样一个字符串'POINTER://'+IntToHex(Longint(MemStream.Memory),8);,谁能解释含义?
其中MemStream已被声明为TMemoryStream

以下是完整的代码:
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;
代码中的copydata定义如下:
procedure TForm1.CopyData(nBytes: Longint);
begin
try
nBytes := Min(nBytes,FileStream.Size-FileStream.Position);
MemStream.CopyFrom(FileStream,nBytes);
except
// no exception please
end;
end;

其中
AudioPlayer.FileName := 'POINTER://'+IntToHex(Longint(MemStream.Memory),8);
这句我改为AudioPlayer.FileName := 'c:\windows\hello.mp3'也行,也就是说fileName要求输入含路径的文件名即可。可上述代码是什么意思呢?另:AudioPlayer是一个可以播放wav,MP3等文件的vcl


...全文
39 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
airhorse 2001-06-11
  • 打赏
  • 举报
回复
播放内存文件,将文件先读到内存里,再进行播放,加快播放速度!;—)

'POINTER:即内存地址!
商雁 2001-06-11
  • 打赏
  • 举报
回复
'POINTER://'+IntToHex(Longint(MemStream.Memory),8);
这种方式可以在任何类似的情况采用吗?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧