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) :allright:
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 -
:lol: 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..." :twisted:

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) :allright:
ganz genau :allright:

da ist mal jemand, der verstanden hat. :D

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:

Code: Alles auswählen

StrQ(CountList(MeineMucke()))
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