AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi zufällige MP3s abspielen
Thema durchsuchen
Ansicht
Themen-Optionen

zufällige MP3s abspielen

Ein Thema von Matze · begonnen am 3. Sep 2003 · letzter Beitrag vom 3. Sep 2003
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

zufällige MP3s abspielen

  Alt 3. Sep 2003, 10:39
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?

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;
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#2

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:03
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:

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:
(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3'))
tatsächlich exakt Pfad und Name Deiner Mp3 zurück gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:05
Ich habe noch etwas vergessen zu sagen:

randomize habe ich im OnCreate der Form.

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.
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#4

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:11
Na Du bist ja cool.
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!
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#5

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:14
Zitat von Dannyboy:
Na Du bist ja cool.
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!
By the way:
Zitat:
Ein zufälliger Titel (von den 4) wird abgespielt,
ist nicht ganz korrekt. Du bekommst bloß 3 mögliche Ergebnisse
und zwar 1, 2 oder 3!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:14
Ich rufe sie einmal auf im OnActivate, ich probier das mal mit einem Timer...
Danke.
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#7

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:28
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;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: zufällige MP3s abspielen

  Alt 3. Sep 2003, 11:38
Danke!

Aber ich habe einfach das hier in den Timer gepackt und es geht!

Delphi-Quellcode:
if MediaPlayer1.Position=MediaPlayer1.Length then
  begin
    MediaPlayer1.Stop;
    playMP3Sound;
  end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz