25.11.2012, 02:43
|
|
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
При выполнении OpenDialog1.Execute следует код
Код:
function OpenFileName : Boolean;
begin
Result := False;
// create a stream from the file
isMod := mdBassStream;
ChanDecoder := BASS_StreamCreateFile(False, PAnsiChar(szFileName), 0, 0, BASS_SAMPLE_FLOAT or BASS_STREAM_DECODE or BASS_STREAM_PRESCAN);
if ChanDecoder = 0 then
begin
isMod := mdBassMusic;
ChanDecoder := BASS_MusicLoad(False, PAnsiChar(szFileName), 0, 0, BASS_SAMPLE_FLOAT or BASS_MUSIC_DECODE or BASS_MUSIC_PRESCAN, 0);
if ChanDecoder = 0 then
begin
// Can't load the file
isMod := mdBassEmpty;
MessageBox(0, PAnsiChar(Format('%s "%s"', [szNotOpenFile, szFileName])), 'Error', MB_OK or MB_ICONERROR);
Exit;
end;
end;
case isMod of
mdBassStream : ChanPlay := BASS_StreamCreateFile(False, PAnsiChar(szFileName), 0, 0, BASS_SAMPLE_FLOAT);
mdBassMusic : ChanPlay := BASS_MusicLoad(False, PAnsiChar(szFileName), 0, 0, BASS_SAMPLE_FLOAT, 0);
end;
// get byte length
ChanLen := BASS_ChannelGetLength(ChanDecoder, BASS_POS_BYTE);
// allocate a buffer for the Channel data
SetLength(ChanData, ChanLen);
// decode the stream into the buffer
ChanLen := BASS_ChannelGetData(ChanDecoder, ChanData, ChanLen);
if ChanPlay <> 0 then
BASS_ChannelPlay(ChanPlay, False);
Result := True;
end;
на кнопку будет так
Код:
if OpenDialog1.Execute then
begin
isPlayed := False;
BASS_ChannelStop(ChanPlay);
FreeBuffer;
OpenFileName;
AllocateWaveData;
isPlayed := True;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|