Kezdőoldal » Számítástechnika » Programozás » C# Form Music Player programozás?

C# Form Music Player programozás?

Figyelt kérdés

Csináltam e videó alapján egy zenelejátszót:

https://www.youtube.com/watch?v=M_yXFvHf1jw

Persze sok-sok extrával, de az egyiknél megakadtam:

Hogy tudnám a lista tartalmát elmenteni(pl 1 txt fájlba), hogy később vissza tudjam tölteni. Ahogy néztem csak a számoknak a címét írja be a fájlba, és abból nem hiszem, hogy vissza tudná tölteni a listát. Szerintem az open file dialoggal kéne valamit csinálni.

És lenne még egy kérdésem:

A listába ha 2x tallózok be számokat, összekeverednek, rákkatintok valamelyikre és az X-el alatta lévőt játsza le. (remélem értitek:D de ha megírjátok ki lehet tapasztalni) Ezt a hibáját hogy lehetne javítani?

A válaszokat előre is köszönöm!



2014. máj. 25. 22:49
 1/5 anonim ***** válasza:

Nem is értem, minek csinál tutorial videókat valaki, akinek köze nincs programozáshoz, na mindegy..


"Hogy tudnám a lista tartalmát elmenteni(pl 1 txt fájlba), hogy később vissza tudjam tölteni. Ahogy néztem csak a számoknak a címét írja be a fájlba, és abból nem hiszem, hogy vissza tudná tölteni a listát. Szerintem az open file dialoggal kéne valamit csinálni."

Nyilván nem elég a számoknak a címét elmenteni, mert abból nem fogod tudni, hol vannak a meghajtón. Neked a path-file párosokat kell elmenteni, teljes elérési úttal.

Azt meg úgy tudod, hogy végigmész a két tömbön párhuzamosan, és soronként beleírod egy file-ba, valami olyan elválasztó karakterrel, ami nem szerepelhet file névben.


"A listába ha 2x tallózok be számokat, összekeverednek, rákkatintok valamelyikre és az X-el alatta lévőt játsza le. (remélem értitek:D de ha megírjátok ki lehet tapasztalni) Ezt a hibáját hogy lehetne javítani?"


Na pont ezért írtam, hogy ennek a formának nem programozás videókat kéne csinálnia, hanem inkább gödröt ásni, de lehet még azt elrontaná..

Egy gyors megoldás: mielőtt betöltöd a listbox-ba, clear-eled a listbox-ot.

Persze így nem lehet valójában hozzáadni újat a listához, csak mindig újragyártani.


Egy normálisabb megoldás: a files meg a paths-okat listaként definiálod, és mindig hozzáadod, amit beolvastál, nem pedig felülírod az egészet, mint ahogy most teszi a tömbökkel.

2014. máj. 26. 13:22
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Youtuberól nem lehet programozni, felejtsük már le ezt a baromságot.

Ezt gányolásnak hivják, ráadásul a végén (ahogy látszik is) abszolút lövésed sincs róla, hogy mit csinálsz.

2014. máj. 26. 13:48
Hasznos számodra ez a válasz?
 3/5 SimkoL ***** válasza:
Nem vágom perfekt A C#-t de szerintem ott is van ListView :) Belepakolhatsz mindent, filenév elérési úttal, lejátszási idő, sorszám.... én legalábbis így csináltam anno [link] Kimenteni egy mezei txt file-ba. Tetszés szerint tudod rendezni őket.
2014. máj. 26. 15:49
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

Minden választ köszönök!

1.nek: Én is úgy gondoltam, hogy a teljes elérési út kell, és gondoltam, hogy üríteni kéne csak az úgy nem megoldás:/

2.nak:Egy dolog lemásolni valamit, és másik tanulni belőle.

3.nak:Köszönöm a választ, megnézem.

2014. máj. 26. 21:33
 5/5 anonim ***** válasza:

"1.nek: Én is úgy gondoltam, hogy a teljes elérési út kell, és gondoltam, hogy üríteni kéne csak az úgy nem megoldás:/"


Miért nem megoldás? Pontosan ez a megoldás. Sőt, ha normális lejátszót akarsz írni, akkor elmondom, hogy kell csinálnod:

írsz egy olyan class-t(legyen a neve mondjuk MP3File), ami eltárolja a file nevét teljes elérési úttal, valamint a constructor-ban - aminek a paramétere a filenév - kiolvassa az mp3 file id3-ját, és kiolvassa az artist/album/track infókat, override-olod a tostring() method-ot, amiben visszaadod összefűzve mondjuk az "[artist] - [track]" string-et.

Override-olod az equals-t is, amiben a file nevét fogod vizsgálni egyenlőségre.

Aztán csinálsz egy generikus listát a form-ban - legyen mondjuk a neve playList, aminek a típus-paramétere a fent említett class lesz, tehát:

private List<MP3File> playList = new List<MP3File>();

Aztán : megmarad ugyanez a file browser, de amikor kiválasztja a fileokat, akkor az event handlerben a következőt kell csinálnod:

MP3File instance-okat készítesz a kiválasztott file-okból, végigmész rajtuk, és megnézed Contains-el, hogy szerepel-e már a playList-ben, hogy ne legyen duplán hozzáadva. (persze ha azt akarod, hogy többször is hozzáadhassa a user ugyanazt a számot, akkor ez nem kell).


Aztán a mentés/betöltés innen már gyerekjáték, mentéskor csak végigmész a playList-en, és minden MP3File-ból a filenevet beleírod egy txt file-ba, mindegyiket egy külön sorba.


Betöltéskor pedig majd kell még egy gomb/dialog páros, amiben kiválaszthatja a betöltendő playlist-et. Annak az event handler-ében pedig annyit kell csinálnod, hogy clear-eled a playList-et, MP3File instance-okat csinálsz a beolvasott file soraiból, és belerakod őket a playlist-be.


Aztán természetesen annyit még megoldasz, hogy minden alkalommal, amikor a playlist változik, újragenerálod a listbox elemeit.


Kb. ennyi.

2014. máj. 27. 11:31
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!