![]() |
zufällige MP3s abspielen
Hi!
Ich möchte als Hintergrundmusik für mein Programm zufällige MP3s abspielen, wieso geht folgender Code nicht, und wie mache ich es richtig? :gruebel:
Delphi-Quellcode:
procedure TForm1.playMP3Sound;
var Song: integer; begin Song:=random(3)+1; MediaPlayer1.FileName:=(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3')); MediaPlayer1.Open; MediaPlayer1.Play; if MediaPlayer1.Position=MediaPlayer1.Length then begin MediaPlayer1.Stop; playMP3Sound; end; end; |
Re: zufällige MP3s abspielen
Was exakt funktioniert denn daran nicht, Matze? Wird gar nichts gespielt
oder wird der Zufall nicht eingahalten? Mir stechen zunächst mal 3 wesentliche Dinge ins Auge: :chat: 1.) Zu Deiner Rekursion: Sie ist im Grunde unendlich. Solltest Du sehr viele Tracks laufen haben, stürzt Dir das Ding wegen 'nem Stack-Overflow ab. Hier nimmst Du entweder eine Abbruchbedingung der Rekursion mit rein, oder Du nimmst die Schleife raus und packst sie nach außen. 2.) Gib dem Mediaplayer doch mal die Information, dass Du explizit MP3-Files spielst, falls Du das nicht mittles Objektinspektor bereits getan hast. 3.) Überprüfe mal in einem Editfeld, ob Zitat:
|
Re: zufällige MP3s abspielen
Ich habe noch etwas vergessen zu sagen:
Delphi-Quellcode:
habe ich im OnCreate der Form.
randomize
Ein zufälliger Titel (von den 4) wird abgespielt, ist dieser zu Ende, dann wird kein weiterer Song abgespielt. Ich glaube, das liegt daran, dass ich in der procedure, dieselbe wieder aufrufe. |
Re: zufällige MP3s abspielen
Na Du bist ja cool. :o
Wann rufst Du die Prozedur eigentlich auf ??? Wie oft ??? Schreibe den Prüfungsteil des Trackendes mal in einen Timer oder meinetwegen ins Idle, damit regelmäßig geprüft wird, ob der Track zuende ist! |
Re: zufällige MP3s abspielen
Zitat:
Zitat:
und zwar 1, 2 oder 3! |
Re: zufällige MP3s abspielen
Ich rufe sie einmal auf im OnActivate, ich probier das mal mit einem Timer...
Danke. :thumb: |
Re: zufällige MP3s abspielen
Habe das einfach mal aus dem Bauch heraus geschrieben, ohne Test !!!
Probier's aus.
Delphi-Quellcode:
procedure TForm1.OnTimer(Sender:TObject); // 1000 millisec ist ok!
begin if NextTrack then begin MediaPlayer.stop; playMP3Sound; end; end; function TForm1.NextTrack : Boolean; begin With MediaPlayer Do result:= Position >= Length {verwende, den ">=" Operator und versichere Dich, dass das automatische Zurückspulen beim Ende eines Files auf FALSE steht !!! } end; procedure TForm1.playMP3Sound; var Song: integer; begin Song:=random(3)+1; // 1, 2 oder 3 !!! MediaPlayer1.FileName:=(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3')); MediaPlayer1.Open; MediaPlayer1.Play; end; |
Re: zufällige MP3s abspielen
Danke!
Aber ich habe einfach das hier in den Timer gepackt und es geht! :thumb:
Delphi-Quellcode:
if MediaPlayer1.Position=MediaPlayer1.Length then
begin MediaPlayer1.Stop; playMP3Sound; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz