Hallo allerseits,
ich habe die bass.dll benuzt um einen kleinen mp3-stream player zu bauen. Abspielen funktioniert auch so weit...
Nur leider bekomme ich es nicht hin die callbacks der bassdll auf funktionen/proceduren meiner Thread classe zu biegen. Wenn ich jetzt aber den Thread beenden will wenn das lied fertig ist brauche ich doch den callback "BASS_SYNC_END", oder ???
BASS_ChannelSetSync(HSTREAM(chan^), BASS_SYNC_END, 0, @EndSync, 0);
Die Zuweisung zu meiner procedure TPlayThread.EndSync geht nur leider gar nicht. Hier nochmal ein bisschen mehr code...
Delphi-Quellcode:
TPlayThread =
class(TThread)
private
_url:
string;
chan: pointer;
public
procedure EndSync(buffer: Pointer; len, user: DWORD);
stdcall;
constructor Create(_chan:pointer;
url:
string);
protected
procedure Execute;
override;
end;
implementation
constructor TPlayThread.Create(_chan:pointer;
url:
string);
begin
inherited Create(false);
_url:=
url;
chan:=_chan;
end;
procedure TPlayThread.EndSync(buffer: Pointer; len, user: DWORD);
stdcall;
begin
self.terminate;
end;
procedure TPlayThread.Execute;
var
icy: PChar;
begin
BASS_StreamFree(HSTREAM(chan^));
// close old stream
progress := 0;
HSTREAM(chan^) := BASS_StreamCreateURL(PChar(_url), 0, BASS_STREAM_STATUS, @work, 0);
BASS_ChannelSetSync(HSTREAM(chan^), BASS_SYNC_END, 0, @EndSync, 0);
...
Weiss irgendjemand wie man das machen könnte???
Gute nacht...