Hjælp til database/fil håndtering

Tags:    visual-basic

<< < 12 > >>
Jeg har ca 400-500 cd’er som ligger på min HD, og så ville jeg gerne lave et program, så man få et foto af cd’en frem og når man trykker på fotoet spilles den cd.
Men alle mine cder ligger i filstruktur.

Musik\ Andrew Strong\\Strong
Ann-louise\\Wonder Wheel
Kim larsen\\7-9-13
Kim larsen\\glemmebogen
Bonnie Tyler\\The Best of the Best

Jeg kunne også godt tænke mig at have et søge system, så når man trykker på en knap, A, så får man alle de cd’er der begynder med A frem.
Jeg kunne lave en database, men med 400 cd’er, håber jeg at der er en anden måde.




14 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Til opgaven med at holde styr på 400-500 billeder forslår jeg at du har en speciel mappe med alle billederne i. Billederne skal hedde det samme som den overordnede mappe der indeholder musik filerne og skal opfattes som en cd af programmet.

Filsystemet er meget normalt med at du søger alle filer og mapper igennem i mappen /musik også kun lister alle de mapper op som indeholder musik filer - så vi kun kan se cd'erne. Så skal du ved klik på en cd på listen få den til at søge den der mappe jeg nævte med alle billederne igennem efter et billede der hedder ligepræcis det mappen, som brugeren klikkede på, hed. Hvis den ikke finder noget vises et default billede...

Søge tjenesten er også meget simpel da du blot skal søge mapperne igennem på listen og så vise dem der passer med søgningen.

Du må være opmærksom på at det nok kan tage pænt lang tid at søge alle undermapper igennem i mappen /musik og derfor gider du ikke at gøre det hver gang programmet starter! Lav en knap der hedder "Opdater" og når denne bliver klikket på skal den påbegynde søgningen. Søgeresultaterne skal gemmes i en database, eller bare en txt fil, således at du kan loade dem hurtigt næste gang! Og så kan brugeren bare trykke "Opdater" når han har fået nye albums.

Håber det giver mening det jeg har skrevet for jeg er pænt træt! G'nat...

// Great programs often follow great brains!



Hej HAP
Tak for dit svar. Jeg kan godt følge din tankegang og jeg har også lavet selve fremvisningen af cderne, med en knap til at blader frem og til bage mellem cderne. Det har jeg gjort ved at ligge alle cd coverne over i en mappe, og når programmet starter op smider jeg alle coverne over i en filliste.
Men jeg har problemer med søge funktionen, da jeg ikke helt ved hvordan man gør.
Og et andet problem jeg har er at man jo ikke kan Kalle et cover det samme som der vor musiken ligger, eks. C:\\musik\\Andrew Strong\\Strong.
Så der er jeg strandet lige nu, så hvis du har nogle ideer




Som jeg kan forstå det har du sorteret det på denne måde:

C:\\musik\\ARTIST\\ALBUM\\SONG.mp3

Hvis du så kalder coveret fx:
Andrew Strong%Strong.gif

Når så man på listen du siger du har oprettet trykker på dette cover viser den et billede af coveret samt viser alle filerne der ligger i mappen
C:\\musik\\Andrew Strong\\Strong

Den lette måde at gøre dette på er ved at oprette en FileListBox (er standard, så du behøver ikke tilføje den som component) og sætte dens path til "C:\\musik\\Andrew Strong\\Strong":

filSongs.Path = "C:\\musik\\Andrew Strong\\Strong"

// Great programs often follow great brains!



Det ville faktisk være smartere hvis du brugte en TreeView til at vise dine albums!

Den ligger som control kaldet "Microsoft Windows Common Controls 6.0 (SP4)"

Her er et eksempel på hvordan du bruger den:
Fold kodeboks ind/udKode 


Det skulle vist forklare hvordan du tilføjer ting. Hvis du vil så vil vide hvilken en brugeren vælger skriver du:
Fold kodeboks ind/udKode 


Læg mærke til at den faktisk skriver den sti du har lagt dine filer i! Så behøver du blot at tilføje "C:\\musik\\" og så ligge denne værdi bagved. Den fulde sti du nu har kan du ligge ind i den FileListBox jeg fortalte dig om tidligere.

// Great programs often follow great brains!



En lille hurtig samling af det hele:

Hvis du bruger navnene Andrew Strong%Strong.gif kan du jo med lethed finde tilføje dem til din TreeView ved først at tjekke om det band allerede findes og hvis det gør så bare tilføje albummet som jo er den sidste del af filnavnet "Strong". Hvis det ikke findes skal den først oprette bandet, den første del af filnavnet "Andrew Strong", og bagefter oprette albummet ind under bandet.

Når han klikker et sted på din TreeView får du FullPath. Denne bruger du til at loade coverets billed og til at liste filerne der hører til albummet.
Du kan nemlig let omskrive "Andrew Strong\\Strong" (FullPath) til "Andrew Strong%Strong.gif" (coveret) og så loade billedet med:
Fold kodeboks ind/udKode 


Samtidigt loader du filerne fra cd'en ind i en FileListBox ved at sætte dens Path til "C:\\musik\\" og den FullPath du har fået.

Når brugeren så vil hører et musik nummer fra albummet dobbeltklikker han naturligvis på din FileListBox på det nummer han vil høre.
Her bruger du (erstat FullPath med det jeg skrev tidligere for at finde frem til dins TreeViews aktive felts FullPath):
Fold kodeboks ind/udKode 


// Great programs often follow great brains!



Holder ørene stive, selvom det er noget indviklet.
Men jeg har gjort det lidt anderledes. jeg har en fremviser som viser alle coverne fra en mappe.
Det virker også helt fint, men jeg forstår ikke helt hvad du mener med "Andrew Strong%Strong.gif"
Det er % tegnet jeg ikke helt forstår, det ville være nemmer hvis man bare kunne kalde coveret for
"Andrew Strong\\Strong.jpg" men men.

Her er hvad jeg gør når der trykkes på coveret

Private Sub imgimage_Click()
On Error Resume Next
Dim x As Integer
Dim Txt1 As String
List3.Clear
List4.Clear
List3.AddItem "c:\\my musik\\" & List2.Text ‘’’’’’’’’’(list2 er fra fremviseren)

For x = 0 To List1.ListCount - 1
If List1.List(x) Like "*\\" Then
Txt1 = Dir(List1.List(x) & "*.mp3")
Else
Txt1 = Dir(List1.List(x) & "\\*.mp3")
End If
If Not Txt1 = "" Then
Do
List4.AddItem Txt1
Txt1 = Dir$
Loop Until Txt1 = ""
End If

Next x
List4.ListIndex = 0

List2 er så coverets filnavn. "Andrew Strong%Strong.jpg" der kan jeg ikke finde ud af at slette
.jpg

ja undskyld hvis jeg er lidt tung, men det kan godt være jeg er kommet ud på det dybe og ikke helt kan bunde




Det virker også helt fint, men jeg forstår ikke helt hvad du mener med "Andrew Strong%Strong.gif"
Det er % tegnet jeg ikke helt forstår, det ville være nemmer hvis man bare kunne kalde coveret for "Andrew Strong\\Strong.jpg" men men

Ideen med "Andrew Strong%Strong.jpg" var at man skulle have informationerne liggende i filnavnet. Filen kan af gode grunde ikke hedde "Andrew Strong\\Strong.jpg" med mindre du ligger "Strong.jpg" ind i en mappe kaldet "Andrew Strong", hvilket ville ødelægge den nemme måde at loade det hele ind på.


List2 er så coverets filnavn. "Andrew Strong%Strong.jpg" der kan jeg ikke finde ud af at slette .jpg
Hvis alle dine billeder hedder enten *.bmp eller *.jpg eller *.gif så ved du jo at du bare skal slette de sidste 4 tegn af filnavnet!

Left$(Filnavn, len(Filnavn) -4)

// Great programs often follow great brains!



Ok. nu er jeg ved at have den. smart måde at slette 4 tegn af filnavnet.
Men til sidst, for at komme fra "Andrew Strong%Strong.jpg" til "Andrew Strong\\Strong.jpg", skal jeg bruge den måde som du beskrev, eller er der en nemmer måde




Ok. nu er jeg ved at have den. smart måde at slette 4 tegn af filnavnet.
Men til sidst, for at komme fra "Andrew Strong%Strong.jpg" til "Andrew Strong\\Strong.jpg", skal jeg bruge den måde som du beskrev, eller er der en nemmer måde


Fold kodeboks ind/udKode 


Hvis Filnavn er "Andrew Strong%Strong.jpg" bliver 'Folder' den mappe som musikken ligger i.

Jeg optimerede lige kode :D

// Great programs often follow great brains!

[Redigeret d. 14/03-04 22:58:36 af HAP]



Det er godt nok en smart måde at gøre det på.
nu virker det hele, med cder og med tryk på cden, spiller den.
men nu mangler jeg bare at lave en eller anden søge funktion, så når jeg trykker på en knap, med et ”A” så finder den alle de cder der starter med A. men men



<< < 12 > >>
t