C# Form Music Player programozá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!
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.
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.
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.
"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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!