Seite 3 von 4

Verfasst: 29.08.2007 21:26
von Captn. Jinguji
bei mir spielt es immer das letzte der Liste,egal welches ich anclicke.

Ich würde übrigens noch .flv mit aufnehmen, für die vielen daylimotion fans ;)

Verfasst: 29.08.2007 21:40
von Kiffi
Kiffi hat geschrieben:Das Programm wird aber auf die Dauer recht eintönig sein,
wenn es immer nur ein Lied abspielt ;-)
Captn. Jinguji hat geschrieben:bei mir spielt es immer das letzte der Liste,egal welches ich anclicke.
@Zerosurf:

um mal einen kleinen Tipp abzugeben:

Du musst vor RunProgram() mit SelectElement(MeineMucke()) das Lied
auswählen, dass auch im ListView angewählt wurde
(Stichwort: GetGadgetState()).

Grüße ... Kiffi

Verfasst: 29.08.2007 21:45
von Zerosurf
@Kiffi: genau das habe ich mir gerade auch gedacht!

vielen dank,

mfg. Zerosurf

Verfasst: 29.08.2007 21:56
von Zerosurf
here we go:

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
                 p = GetGadgetState(2)
                 SelectElement(MeineMucke(), p)
              RunProgram("VLCPortable\VLCPortable.exe", Chr(34) + MeineMucke() + Chr(34), "")  ; Pfad zum Mediaplayer
               EndSelect
          EndSelect

   
  EndIf
 
Until Event = #PB_Event_CloseWindow
End
vielen dank kiffi!

hast mir sehr geholfen!

und die nächste frage:

wie kann ich beim starten des programmes die liste automatisch einlesen lassen?

Verfasst: 29.08.2007 22:15
von HeX0R
Zerosurf hat geschrieben: und die nächste frage:

wie kann ich beim starten des programmes die liste automatisch einlesen lassen?
Jetzt ist selbständiges Denken gefragt...
Wenn ich mir den Codeschnippsel so anschaue, frage ich mich wieviel davon eigens erstellt wurde und wieviel einfach irgendwo rausgepappt und eingeklebt wurde...

Verfasst: 29.08.2007 22:21
von Kiffi
Zerosurf hat geschrieben:wie kann ich beim starten des programmes die liste automatisch einlesen lassen?
da Du das ganze sowieso auf CD oder DVD packen willst, kannst Du die
Liste einmalig erstellen lassen (mit einem separaten Tool) und diese dann
mit Deinem Programm einlesen. Dann kannst Du sucheMusikdateien() aus
Deinem 'Player' entfernen und in das separate Tool einbinden.

Die Liste erstellst Du mit:

CreateFile(), WriteStringN(), CloseFile

Die Liste lässt sich einlesen mit folgenden Befehlen / Funktionen:

ReadFile(), EOF(), ReadString(), CloseFile()

Du musst die Befehle nur noch richtig anwenden. ;-)

Grüße ... Kiffi

Verfasst: 29.08.2007 22:26
von Zerosurf
Ich hätte aber gerne alles in einem tool und die möglichkeit die liste stets aktuell einzulesen!

Die liste wird ja durch den button 0 generiert, richtig?

es muss doch eine einfachere Möglichkeit geben die liste schon beim öffnen ohne benützung des button 0 einlesen zu lassen?

Verfasst: 29.08.2007 22:32
von Kiffi
Zerosurf hat geschrieben:Ich hätte aber gerne alles in einem tool und die möglichkeit die liste stets aktuell einzulesen!
... könnte ja sein, dass sich auf der CD irgendetwas ändert, oder? :cool:
Zerosurf hat geschrieben:Die liste wird ja durch den button 0 generiert, richtig?
Ähm, ja. Das solltest Du aber am besten wissen, weil Du derjenige bist, der
das Programm geschrieben hat.
Zerosurf hat geschrieben:es muss doch eine einfachere Möglichkeit geben die liste schon beim öffnen ohne benützung des button 0 einlesen zu lassen?
sorry, aber ich glaube fest daran, dass Du selber in der Lage bist, die
entsprechende Zeile zu lokalisieren und an den geeigneten Ort zu
verschieben. Oder mit anderen Worten:
HeX0R hat geschrieben:Jetzt ist selbständiges Denken gefragt...
Grüße ... Kiffi

Verfasst: 29.08.2007 22:38
von Zerosurf
oh mann - ich steh grad auf dem schlauch - laß mich doch bitte, bitte nicht so betteln!

muß ich eine oder mehrere zeile(n) verschieben oder kopieren?

ich tippe mal auf diesen abschnitt:

Code: Alles auswählen

      sucheMusikdateien(GetGadgetText(1), MeineMucke())

      ForEach MeineMucke()
     
        AddGadgetItem(2, -1, MeineMucke())
       
      Next
     
      AddGadgetItem(2, -1, StrQ(CountList(MeineMucke()))+" Dateien gefunden")
aber was jetzt genau weiß ich auch nicht.

Nicht vergessen: Ich bin ein absoluter Anfänger!

mfg. Zerosurf

Verfasst: 29.08.2007 22:41
von Zerosurf
so glaube ich müßte es funktionieren:

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, "\") ; Verzeichnis welches die Multimediadateien enthält
    ListViewGadget(2,                5,30, 590, 365)

      sucheMusikdateien(GetGadgetText(1), MeineMucke())

      ForEach MeineMucke()
     
        AddGadgetItem(2, -1, MeineMucke())
       
      Next
     
      AddGadgetItem(2, -1, StrQ(CountList(MeineMucke()))+" Dateien gefunden")



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
                 p = GetGadgetState(2)
                 SelectElement(MeineMucke(), p)
              RunProgram("VLCPortable\VLCPortable.exe", Chr(34) + MeineMucke() + Chr(34), "")  ; Pfad zum Mediaplayer
               EndSelect
          EndSelect

   
  EndIf
 
Until Event = #PB_Event_CloseWindow
End
mfg. zerosurf