Hi,
hiermit spiele ich Lieder ab:
Delphi-Quellcode:
procedure TfrmMain.PlayFile(
index : integer);
var filename :
String;
begin
if (
index < 0)
or (
index >= length(fFiles))
then
begin
raise Exception.Create('
Index ausserhalb des erlaubten bereichs');
end;
BASS_ChannelSetPosition(chan, 0);
BASS_ChannelStop(chan);
filename := fFiles[
index].pfad;
chan := BASS_StreamCreateFile(FALSE,pchar(filename),0,0,0);
if chan = 0
then
begin
chan := BASS_MusicLoad(False, pchar(filename), 0, 0, BASS_MUSIC_RAMPS
or BASS_MUSIC_POSRESET
or BASS_MUSIC_PRESCAN, 0);
if (chan = 0)
then
begin
MsgBox('
Cannot play this song!');
Exit;
end;
end;
BASS_ChannelPlay(chan, TRUE);
end;
fFiles: Array of TAudioFile;
filename := fFiles[index].pfad;
wenn ich auf den OK-Button im selbstgemachten OpenDialog klicke, wird das hier aufgerufen:
Delphi-Quellcode:
procedure TfrmMain.AddIt;
var i : Integer;
begin
setlength(f, frmOp.sl.Count);
for i := 0 to pred(frmOp.sl.Count) do
begin
f[i] := frmOp.sl[i];
end;
AddFiles(f); [color=#ff0000]*[/color]
end;
* da wurde AddFiles aufgerufen...:
Delphi-Quellcode:
procedure TfrmMain.AddFiles(files : Array of String);
var
len : integer;
i : integer;
begin
len := high(fFiles);
if len < 0 then
len := 0;
SetLength(fFiles, len + Length(files));
for i := 0 to length(files) - 1 do
begin
fFiles[len+i] := TAudioFile.Create;
fFiles[len+i].GetAudioData(Files[i]);
end;
UpdateListBox();
end;
procedure TfrmMain.UpdateListBox;
var i : integer;
begin
lbList.Items.BeginUpdate;
lbList.Clear;
for i:= 0 to length(fFiles) - 1 do
begin
lbList.Items.Add(fFiles[i].Artist + ' - ' + fFiles[i].Titel);
end;
lbList.Items.EndUpdate;
end;
In AddFiles läuft etwas schief, denn es wird eine Meldung zum Abfangen einer
AV in PlayFile hervorgerufen, wenn ich ein Lied (egal welches in der Playlist(lbList)) abspielen will. Anhand der Meldung weiß ich schonmal das das der Channel leer ist.
Die Frage: Was läuft in AddFiles schief ?
Wissenswert ist noch das: