Seite 2 von 4
Verfasst: 29.08.2007 16:42
von Zerosurf
gnasen hat geschrieben:ich will ja wirklich nichts sagen (bin selber ja auch noch anfänger), aber ich weiss nicht ob das der richtige Weg ist.
Ich verbringe einen großteil mit dem Suchen im Forum und in der Hilfe und versuche mit den Ergebnissen meinen Code selber zu schreiben. Aber einfach alles vorgekaut aneinander heften ist glaub ich nicht sehr hilfreich.
Ich würd versuchen mehr die Sachen selber zu erlernen, nur nen Tipp von mir (nicht bös gemeint das alles)

Was glaubst Du, wie lange ich hier schon suche und rumbastel...
Ich sitz jetzt hier seit heute morgen und versuche meine Aufgabe zu lösen - ich bin beim Sachen selber lernen. Nur ganz ohne Hilfe und Patchwork funktioniert das bei mir nicht!
NAtürlich bin ich Anfänger und hab keine Ahnung vom coden - deswegen bin ich ja auch hier im Anfängerforum!
Verfasst: 29.08.2007 16:48
von Zerosurf
So hier der aktuelle Code:
Code: Alles auswählen
; PureBasic 4.00!
Procedure sucheMusikdateien(pfad.s, Liste.s(), typ.s="mp3,wma,wav")
PathAddBackslash_(@pfad) ; Hängt Backslash an, falls nötig
Protected dir=ExamineDirectory(#PB_Any, pfad, ""), n
If dir
While NextDirectoryEntry(dir)
If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
For n=1 To CountString(typ, ",")+1
If StringField(typ, n, ",") = LCase(GetExtensionPart(DirectoryEntryName(dir)))
AddElement(Liste())
Liste()=pfad+DirectoryEntryName(dir)
Break
EndIf
Next
Continue
ElseIf DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".."
sucheMusikdateien(pfad+DirectoryEntryName(dir), Liste(), typ)
EndIf
Wend
FinishDirectory(dir)
EndIf
EndProcedure
NewList MeineMucke.s()
OpenWindow(0, 0, 0, 600, 400, "Musik", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ButtonGadget(0, WindowWidth(0)-105, 5, 100, 20, "Auflisten")
StringGadget(1, 5, 5, 485, 20, "\")
ListViewGadget(2, 5,30, 590, 365)
Repeat
Event = WaitWindowEvent()
Gadget= EventGadget()
If Event = #PB_Event_Gadget
If Gadget = 0
sucheMusikdateien(GetGadgetText(1), MeineMucke())
ForEach MeineMucke()
AddGadgetItem(2, -1, MeineMucke())
Next
AddGadgetItem(2, -1, StrQ(CountList(MeineMucke()))+" Dateien gefunden")
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
wie baue ich jetzt diesen code ein:
Code: Alles auswählen
NewList MeineMucke.s()
Define s.s = ""
ForEach MeineMucke()
s + Chr(34) + MeineMucke() + Chr(34) + " "
Next
RunProgram("c:\vlc.exe", s)
Verfasst: 29.08.2007 18:25
von Kaeru Gaman
Zerosurf hat geschrieben:Was glaubst Du, wie lange ich hier schon suche und rumbastel...
Ich sitz jetzt hier seit heute morgen und versuche meine Aufgabe zu lösen -

is ja n Gag...
wenn du mal
14 Tage gesessen hast um ne aufgabe zu lösen,
mehrere Foren hoch- und runter gesucht hast und immer noch keinen erfolg...
dann darfste sagen "Was glaubst Du, wie lange ich hier schon suche und rumbastel..."
gnasen hat geschrieben:ich will ja wirklich nichts sagen (bin selber ja auch noch anfänger), aber ich weiss nicht ob das der richtige Weg ist.
Ich verbringe einen großteil mit dem Suchen im Forum und in der Hilfe und versuche mit den Ergebnissen meinen Code selber zu schreiben. Aber einfach alles vorgekaut aneinander heften ist glaub ich nicht sehr hilfreich.
Ich würd versuchen mehr die Sachen selber zu erlernen, nur nen Tipp von mir (nicht bös gemeint das alles)

ganz genau
da ist mal jemand, der verstanden hat.

Verfasst: 29.08.2007 18:32
von Zerosurf
Ist ja gut - ich hab schon verstanden!
Könnten wir vielleicht zurück zu meinem ursprünglichen Problem kommen oder sollte ich noch warten, bis der eine oder andere auch noch seine Meinung dazu geäußert hat?
Denn dazu müßten wir aber ein neues Thema starten.
So, ab jetzt bitte nur mehr konkrete Lösungsvorschläge zu meinem ursprünglichen Problem - BITTE!
mfg. Zerosurf
Verfasst: 29.08.2007 18:36
von Kaeru Gaman
du solltest dir überlegen, was der codeabschnitt wo+wie macht.
schreibs doch mal in worten auf, was da passiert, dann kommst du vielleicht auch drauf,wo und wie man was einsetzt.
Verfasst: 29.08.2007 18:43
von Zerosurf
ich hab´s gleich:
hier der letzte abschnitt vom code:
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
Gadget= EventGadget()
If Event = #PB_Event_Gadget
If Gadget = 0
sucheMusikdateien(GetGadgetText(1), MeineMucke())
ForEach MeineMucke()
AddGadgetItem(2, -1, MeineMucke())
Select EventType()
Case #PB_EventType_LeftDoubleClick
RunProgram("C:\Programme\VideoLAN\VLC\vlc.exe")
EndSelect
Next
AddGadgetItem(2, -1, StrQ(CountList(MeineMucke()))+" Dateien gefunden")
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
ich muß nur noch herausfinden was vor dem RunProgram stehen muß!
Verfasst: 29.08.2007 20:19
von Kiffi
Zerosurf hat geschrieben:ich hab´s gleich:
glaube ich nicht.
Select EventType() muss aus der For-Next-Schleife raus. Ausserdem muss
EventType nur dann ausgewertet werden, wenn in WaitWindowEvent() Dein
ListViewGadget ein Ereignis geliefert hat.
Zerosurf hat geschrieben:ich muß nur noch herausfinden was vor dem RunProgram stehen muß!
Vor dem RunProgram()? Du meinst sicherlich den zweiten Parameter von RunProgram(), oder?
Zerosurf hat geschrieben:
sooo viel Mucke hast Du?
Grüße ... Kiffi
Verfasst: 29.08.2007 20:22
von Captn. Jinguji
Du musst noch dran denken, dass der absolute Pfad zu VLC nicht das Wahre ist. Ich hatte Dich so verstanden, dass Du VLC vorsichtshalber mit auf die CD packen willst (würde ja auch für einen Memorystick gelten).
Dann musst Du aber auch heraussuchen, wie der Pfad zu DEINEM VLC lautet.
Wenn Du VLC ins selbe Verzeichnis "neben" Dein eigentliches Programm legst, ist das einfach:
In Deinem Programm ermittelst Du den gerade aktuellen Pfad, aus dem es gestartet wurde mit:
MyProgramPath.s = GetPathPart( ProgramFilename())
Den Aufruf von VLC machst Du dann zum Beispiel mit
myvlc.s = MyProgramPath+"vlc.exe"
RunProgram( myvlc, s )
(wenn in "s" der durch CHR(34) umschlossene Dateiname liegt.
VLC kann übrigens in manchen Versionen ganz schön zickig werden in Verbindung mit RunProgram.
Achja: RunProgram nimmt auch noch einen dritten Parameter, nämlich das "working dir" an;wenn deine videos alle im selben Pfad liegen, brauchst Du die Videos nicht mit voll qualifiziertem Pfad angeben, sondern nur den einfachen Dateinamen, wenn du als dritten Parameter den Pfad des Dir,in dem die vids liegen, angibst.
Verfasst: 29.08.2007 20:56
von Zerosurf
OK ich bin fertig!
Hier ist der Code:
Code: Alles auswählen
Procedure sucheMusikdateien(pfad.s, Liste.s(), typ.s="mp3,wma,wav,wmv,avi,ogg")
PathAddBackslash_(@pfad) ; Hängt Backslash an, falls nötig
Protected dir=ExamineDirectory(#PB_Any, pfad, ""), n
If dir
While NextDirectoryEntry(dir)
If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
For n=1 To CountString(typ, ",")+1
If StringField(typ, n, ",") = LCase(GetExtensionPart(DirectoryEntryName(dir)))
AddElement(Liste())
Liste()=pfad+DirectoryEntryName(dir)
Break
EndIf
Next
Continue
ElseIf DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".."
sucheMusikdateien(pfad+DirectoryEntryName(dir), Liste(), typ)
EndIf
Wend
FinishDirectory(dir)
EndIf
EndProcedure
NewList MeineMucke.s()
OpenWindow(0, 0, 0, 600, 400, "Musik", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonGadget(0, WindowWidth(0)-105, 5, 100, 20, "Auflisten")
StringGadget(1, 5, 5, 485, 20, "media\") ; Verzeichnis welches die Multimediadateien enthält
ListViewGadget(2, 5,30, 590, 365)
Repeat
Event = WaitWindowEvent()
Gadget= EventGadget()
If Event = #PB_Event_Gadget
If Gadget = 0
sucheMusikdateien(GetGadgetText(1), MeineMucke())
ForEach MeineMucke()
AddGadgetItem(2, -1, MeineMucke())
Next
AddGadgetItem(2, -1, StrQ(CountList(MeineMucke()))+" Dateien gefunden")
EndIf
Select EventGadget()
Case 2
Select EventType()
Case #PB_EventType_LeftDoubleClick
RunProgram("VLCPortable\VLCPortable.exe", Chr(34) + MeineMucke() + Chr(34), "") ; Pfad zum Mediaplayer
EndSelect
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
End
So, was sagt Ihr jetzt? Hat zwar etwas gedauert, aber ich hab´s doch geschafft!
Das Programm auf die CD/DVD packen und mit autorun.inf automatisch starten lassen!
Jetzt kommen halt noch die Feinheiten dazu -> sortierbare Einträge, Hintergrundbild, Design, usw....
mfg. Zerosurf
Verfasst: 29.08.2007 21:13
von Kiffi
Zerosurf hat geschrieben:Code: Alles auswählen
RunProgram("VLCPortable\VLCPortable.exe", Chr(34) + MeineMucke() + Chr(34), "") ; Pfad zum Mediaplayer
Das Programm wird aber auf die Dauer recht eintönig sein,
wenn es immer nur ein Lied abspielt
Grüße ... Kiffi