Delphi - přehrávání písniček postupně

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Irox
nováček
Příspěvky: 13
Registrován: listopad 10
Pohlaví: Nespecifikováno
Stav:
Offline

Delphi - přehrávání písniček postupně

Příspěvekod Irox » 24 lis 2010 11:26

Zdravím,

nejdříve bych se chtěl zeptat, jak podmínkou zjistím, že v komponentě listbox není nic? Nemohu na to přijít, omlouvám se, pokud to tady někde je.

A tou hlavní otázkou je mp3 přehrávač. Potřeboval bych poradit, jak napsat např. pomocí cyklu, aby se soubory v seznamu (listbox) postupně přehrávaly.
Jde totiž o budík, který si ve chvílích volna vylepšuji. Nejdříve vždy běžel jen s jednou adresou k souboru a pokud jsem chtěl, aby mě vždy po několika minutách opět hrál, musel jsem aplikací spustit několik a každou nastavit zvlášť. Nyní jsem budík vylepšil o několik věcí a vícenásobné nahrávání souborů. Vše už běží jak má, pouze už si nevím rady, jak uložit do proměnné vždy první řádku (adresu) souboru a tu pomocí media playeru přehrát. Až by dohrála jedna (chtěl bych ještě možnost nastavit, po jaké době), začne hrát druhá, třetí,...

Za všechny odpovědi mockrát děkuji.

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Delphi - přehrávání písniček postupně

Příspěvekod CZechBoY » 24 lis 2010 13:55

Vítej na PC-HELP!
asi existuje v Delphi něco jako Length(listbox.Items) mohlo by to vrátit počet itemů v listboxu, takže když bude 0 nic tam není
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

Re: Delphi - přehrávání písniček postupně

Příspěvekod Sender » 24 lis 2010 14:55

Listbox1.Items.Count

Irox
nováček
Příspěvky: 13
Registrován: listopad 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Delphi - přehrávání písniček postupně

Příspěvekod Irox » 25 lis 2010 10:51

Děkuju moc.
A k té druhé otázce, poradil by někdo prosim?

Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

Re: Delphi - přehrávání písniček postupně

Příspěvekod Sender » 25 lis 2010 18:22

opakovaný přehrávání můžeš zkusit třeba takhle:

Kód: Vybrat vše

var
Form1: TForm1;
Loop : boolean;

implementation

{$R *.dfm}

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if (MediaPlayer1.NotifyValue = nvSuccessful) and (Loop=true) then
begin
MediaPlayer1.Play;
MediaPlayer1.Notify := true;
end;
end;

procedure TForm1.PlayClick(Sender: TObject);
begin
Loop := true;
MediaPlayer1.Play;
MediaPlayer1.Notify := true;
end;

procedure TForm1.StopClick(Sender: TObject);
begin
Loop := false;
MediaPlayer1.Stop;
MediaPlayer1.Notify := true;
end;
end.


V objectinspektoru je třeba nastavit AutoOpen, AutoRewind a AutoEnable na True

Irox
nováček
Příspěvky: 13
Registrován: listopad 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Delphi - přehrávání písniček postupně

Příspěvekod Irox » 28 lis 2010 17:16

Děkuji moc. Jede to jak má :)

Irox
nováček
Příspěvky: 13
Registrován: listopad 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Delphi - přehrávání písniček postupně

Příspěvekod Irox » 07 úno 2011 19:27

Jinak řešil jsem poté ještě postupné přehrávání pisniček z listboxu, kde v listboxu jsou uloženy celé cesty souborů. Takže kdyby někdo řešil stejný problém, vymysel jsem takový "skákající" kód, který funguje bez chyby:

Kód: Vybrat vše

procedure TForm1.Hraj;
begin
 if Lbx.Items.Count <> 0 then
 begin
 TimerGaugeBar.Enabled := True;
 Music.Open;
 Music.Play;
 TimerPlay.Enabled := True;
 end;
end;

procedure TForm1.TimerPlayTimer(Sender: TObject);   
begin
if Music.Position = Music.TrackLength[Music.Length] then
begin
TimerPlay.Enabled := False;
HrajNext;
end;
end;

procedure TForm1.HrajNext;
begin             
 TimerPlay.Enabled := False;
 Music.Close;
 TimerGaugeBar.Enabled := False;
 q := q + 1;
 if q > Lbx.Items.Count-1 then
 Music.Close
 else begin
 Music.FileName := Lbx.Items[q];
 Music.Open;
 TimerGaugeBar.Enabled := True;
 Gauge1.Progress := 0;
 Hraj;
 end;
end;


- Jde pouze o tři hlavní procedury, kdy se úplně první pisnička v seznamu zcela normálně přehraje. V druhé proceduře mezitím timer neustále zjišťuje, zda písnička dohrála, pokud ano, procedura se vykoná a hodí běh programu na další proceduru s názvem HrajNext. V té je asi každému vše jasné, pouze ta nejdůležitější věc je až na poslední řádce, kdy program opět skočí na proceduru Hraj a tak se to neustále opakuje dokola.
Nějakou dobu mě to trvalo, než jsem na to přišel :D. Někomu se to třeba bude hodit.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů