高分求解菜鸟问题!!!!!!!!!!!!!
商雁 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