LoadFromStream ist nicht LoadFromStream.
Ne, das ist zum laden eines "normalen Streams".
Ändere mal in der TBassDLLPlayer.pas in Zeile 472 folgendes:
Delphi-Quellcode:
function TBassdllPlayer.LoadFromResourceName(Instance: HInst; ResourceName: PChar;
ResTyp: TRC_ResourceTyp): Boolean;
var
i, TmpVolume: Integer;
ResStream : TResourceStream;
MemoryStream: TMemoryStream;
begin
//...
if ResTyp = RC_MUSIC then
begin
ResStream := TResourceStream.Create(Instance, ResourceName, RT_RCDATA);
// ...
end else
if ResTyp = RC_STREAM then
begin
ResStream := TResourceStream.Create(Instance, ResourceName, RT_RCDATA);
// ...
und in Zeile 138
Delphi-Quellcode:
published { Published-Deklarationen }
function LoadFromFile(FileName: string): boolean;
//function LoadFromResourceName(ResourceName: PChar; ResTyp: TRC_ResourceTyp): Boolean; // alt
function LoadFromResourceName(Instance: HInst; ResourceName: PChar; ResTyp: TRC_ResourceTyp): Boolean; // neu
und dann sollte es mit:
Delphi-Quellcode:
type
TForm1 = class(TForm)
//...
private
MySoundLibH: HInst;
//...
procedure TForm1.ButtonXYZClick(Sender: TObject);
begin
// Load Stream from Resource (MP3)
MySoundLibH := LoadLibrary('Resources.dll'); // zB. ins FormCreate verschieben
if MySoundLibH <> 0 then
begin
if not BassdllPlayer1.LoadFromResourceName(MySoundLibH, 'MP3STREAM', RC_STREAM) then ; //... ErrorMsg o. ä.
// Start playing
BassdllPlayer1.Play;
FreeLibrary(MySoundLibH); // zB. ins FormDestroy verschieben
end else ; //... ErrorMsg o. ä.
end;
funktionieren.
H := LoadLibrary('Sound.dll');
und
FreeLibrary(H);
würde ich aber als "global deklar." da gegf. sonst ein Fehler kommt. (nach laden aus dem Stream)