Thema: Delphi Bass.dll in TThread

Einzelnen Beitrag anzeigen

Meriones

Registriert seit: 25. Feb 2007
33 Beiträge
 
#1

Bass.dll in TThread

  Alt 30. Nov 2007, 00:24
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...
  Mit Zitat antworten Zitat