Einzelnen Beitrag anzeigen

iron

Registriert seit: 10. Jul 2006
Ort: Berlin
113 Beiträge
 
Delphi 2005 Personal
 
#1

bass.dll Trackbar Problem

  Alt 4. Mär 2007, 22:46
es sieht folgendermaßen aus, wenn ich über OpenDialog ein mp3song suche und abspiele

Delphi-Quellcode:
procedure TForm11.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
   BASS_Init(-1, 44100, 0, Application.Handle, nil);
   OpenDialog1.Title := 'MP3 suchen';
   OpenDialog1.Filter := 'mp3|*.mp3';
   Channel := BASS_StreamCreateFile(FALSE, PChar(OpenDialog1.FileName), 0, 0, 0);
   BASS_ChannelPlay(Channel, False);
   TrackBar1.Max:=GetSetSoundInfo('GetLength');
dann bewegt sich die Trackbar zum Lied mit und ich kann die Position ändern, alles Prima.

aber wenn ich es über eine ListBox anklicke, das sich die Musik aus der Datenbank holt geht es nicht.

Delphi-Quellcode:
procedure TForm11.ListBox1Click(Sender: TObject);
var
x,i,w : integer;
BASS_Init(-1, 44100, 0, Application.Handle, nil);
  w := ListBox1.ItemIndex;
  i := BASS_StreamCreateFile(False, PChar(Form2.mp3ABSTable.fields[2].Asstring + '\' +
                                          Form2.mp3ABSTable.fields[0].Asstring + '\' +
                                          Form2.mp3ABSTable.fields[1].Asstring + '\' +
                                          ListBox1.Items.Strings[w]), 0, 0, 0);
    BASS_ChannelPlay(i , False);
    TrackBar1.Max:=GetSetSoundInfo('GetLength');
Das abspielen funktioniert, nur die Trackbar bewegt sich in diesem Fall nicht.

hier mal den Code für die Anweisungen

Delphi-Quellcode:
function TForm11.GetSetSoundInfo(Info: String): Int64;
var
MilliSec: Integer;
FloatPos: Float;
begin
 If Info = 'GetLengththen FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetLength(Channel))
 Else If Info = 'GetPositionthen FloatPos:=BASS_ChannelBytes2Seconds(Channel, BASS_ChannelGetPosition(Channel));
 MilliSec:=Trunc(1000 * FloatPos);
 If MilliSec < 0 then MilliSec:=0;
 Result:=MilliSec;
end;
Delphi-Quellcode:
procedure TForm11.Timer1Timer(Sender: TObject);
begin
 TrackBar1.Position:=GetSetSoundInfo('GetPosition');
end;
Delphi-Quellcode:
procedure TForm11.TrackBar1Change(Sender: TObject);
var
TBP, BGP: Integer;
begin
 TBP:=TrackBar1.Position;
 BGP:=GetSetSoundInfo('GetPosition');
 If ABS(TBP - BGP) > 1000 then
 BASS_ChannelSetPosition(Channel, BASS_ChannelSeconds2Bytes(Channel, TrackBar1.Position div 1000));
end;
hat wer einer eine Idee was ich falsch mache???
wer früher stirbt, ist länger Tot

Berliner Community http://berliner-cafe.de
  Mit Zitat antworten Zitat