Hi,
ich möchte überprüfen, ob die nächste Datei der Playlist eine Video oder Audiodatei ist und entsprechend abspielen. Was muss ich bei folgendem Code ändern, damit es funktioniert (der Übergang zwischen Audio und Video funktioniert nicht, es liegt an den markierten Zeile, aber ich weiß nicht, wie ich es beseitigen könnte). Der Fehler: Video und Audio haben beide verschiedene Trackbar, wenn ich ein Video abspiele und die nächste Datei eine Audiodatei ist und ich dann verlange, dass die UNVERÄNDERTE AUDIOTRACKBAR auf dem Maximumwert steht, dann kann das nicht funktionieren. Ich weiß halt nicht, wie ich das umgehen könnte.
Delphi-Quellcode:
procedure TfrmMain.tListTimer(Sender: TObject);
begin
if lbList.Items.Count <= 1 then
exit;
if (LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.mp3') or
(LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.wav') or
(LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.wma') or
(LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.aif') or
(LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.aiff') or
(LowerCase(ExtractFileExt(fFiles[playindex+1].Dateiname)) = '.ogg') then
begin
if not tb1.Max - tb1.Position = tb1.Max then
Next_Audio;
if BASS_ChannelIsActive(chan) = BASS_ACTIVE_PLAYING then
begin
if lbList.Items.Count > 0 then
begin
tb1.Max := GetBASSInfo('GetLength');
--> if tb1.Position = tb1.Max then <--
begin
Next_Audio;
end;
end;
end;
end else
begin
--> if frmVideo.tb1.Position = frmVideo.tb1.Max then <--
begin
Next_Video;
end;
end;
end;
procedure TfrmMain.Next_Audio;
var i : Integer;
begin
if rbSeq.Checked then
begin
PlayFile(playindex);
with fFiles[playindex] do
begin
s := Artist + ' - ' + Titel + ' [' + trim(DurationMinSec(IntToStr(GetSongLength))) + ']';
lLauftext.Text := s;
end;
pindex := playindex;
end else
if rbRandom.Checked then
begin
randomize;
BASS_ChannelStop(chan);
for i := 0 to lbList.Items.Count - 1 do
begin
PlayIndex := Random(i);
tb1.Max := GetBASSInfo('GetLength');
PlayFile(playindex);
with fFiles[playindex] do
begin
s := Artist + ' - ' + Titel + ' [' + trim(DurationMinSec(IntToStr(GetSongLength))) + ']';
lLauftext.Text := s;
end;
pindex := playindex;
end;
end else
if rbLoop.Checked then
begin
BASS_ChannelStop(chan);
tb1.Position := 0;
PlayFile(pindex);
end;
Application.Title := s;
lbList.ItemIndex := pindex;
end;
procedure TfrmMain.Next_Video;
begin
spath := fFiles[playindex].Dateiname;
frmVideo.Play;
pause := True;
end;