Eigene Playlist will nicht

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Eigene Playlist will nicht

Beitrag von Lukaso »

Hallo,

ich habe ein Problem, ich möchte eine Fuktion in meinem Programm, die es Erlaubt zwischen 2 Sachen hin- und herzuschalten. Ich habe eine Art Playlist in meinem MP3 Player, man zieht einfach MP3 hinein, diese werden danach alle hintereinander abgespielt, ohne dass der Player jetzt neu anfängt zu Spielen. Jetzt möchte ich dies Abschaltbar machen, dass bei jeder neuen MP3 die hineingezogen wird, diese Gleich abgespielt wird und die alte stoppt.

Die Playlist läuft so:

Ich Schreibe alles in eine Liste:

Code: Alles auswählen

 *dropped = DropFiles () 
            num.l = DragQueryFile_ (*dropped , $FFFFFFFF, temp$, 0) 
            f$ = ""
            If anstellen = 0
              ClearList(playlist())
            EndIf
            For files = 0 To num - 1
              AddElement(playlist())
              playlist() = GetDropFile (*dropped, files)
            Next
            Disablemenu(0)
            files.l = CountList(playlist())
            ResetList(playlist())
            count.l = 0
            CreateThread(@Listplaying(), 0)
            FreeDropFiles (*dropped) 
Hier Listplaying() (wird durch Thread aufgerufen):

Code: Alles auswählen

Procedure Listplaying()
  Repeat
    If FSOUND_Stream_GetLength(hstream) = FSOUND_Stream_GetPosition(hstream)
      SelectElement(playlist(), count)
      Fmod_Close()
      Fmod_Open(playlist())
      Fmod_Play()
      count + 1
    EndIf
      Delay(1)
    Until files = count And FSOUND_Stream_GetLength(hstream) = FSOUND_Stream_GetPosition(hstream)
  SetGadgetState(#Gadget_1, icon_stop)
EndProcedure
Ich habe jetzt schon lange Probiert wie ich die Playliste belassen kann, aber er soll bei jedem Drag gleich die Neue abspielen, nicht einträge in die Playlist hinzufügen. Habe schon mit KillThread Probiert geht alles nicht. Komme einfach nicht auf ne lösung *aufreg*

MFG Lukaso[/list]
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Beitrag von AndyMars »

Hallo Lukaso

Für einen Anfänger hast Du ja Einiges vor... Phu! Wenn ich Du wär, würde ich auf die Verwendung von Threads verzichten - ich finde, die sind wirklich nicht einfach zu handhaben und sind wahrscheinlich für Deine Anwendung auch gar nicht nötig (ich denke die fmod.dll ist eh fähig, Sounds im Hintergrund abzuspielen).
Ich denke, Du willst einfach regelmässig checken, ob ein Musikstück zu Ende ist und dann das nächste abspielen.
Um regelmässig Funktionen auszuführen kannst Du z.B. den API Befehl SetTimer_() verwenden (Bsp.: SetTimer_(WindowID(#Window_Form),1,50,0) ; ms timer). Dann kannst Du die #WM_TIMER-Message mit dem normalem WaitWindowEvent() abfragen...

Nur so eine Anregung ;).
Grüsse von AndyMars
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo,

danke jetzt habe ich es hinbekommen, hätte ich vorher den befehl "SetTimer_()" gekannt, hätte ich meine Nerver ein bißchen geschont :wink:

Danke :allright:
Nextgen Guild Wars Fanseite: Guild Wars Tactics (Pseudo-Admin + Developer)
"Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht." - Unbekannter Autor
Antworten