DELAY() mit Fehler ?? Hilfe !!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

DELAY() mit Fehler ?? Hilfe !!

Beitrag von Stuhli »

Hallo zusammen,

ich habe an der Wand einen PC mit Touchscreen hängen. Leider gibts keinen vernünftig zu bedienenden MP3 Player, also habe ich ihn mir selbst porgrammiert. Der PC ist also meine Stereoanlage. Ich klicke auf ein Song und der läuft dann im Wohnzimmer ab, wenn das Lied zuende ist, kommt das nächste. Einfach, aber mit dicken Fingern zu bedienen und "Hausfrauenkompatibel" 8)
Nun das Problem. Wir hatten ne Feier und die Musik lief - war der Hingucker, bis der Player einfach ausging - Programm stürtzte ohne Fehlermeldung ab. Bum ! Also neugestartet und weiter - kann ja mal sein. Nach 10 Liedern gleiches Problem - aus die Maus. Dann wieder neu gestartet und diesmal nach 13 Songs - also Wahllos - hatte nix mit den MP3s zu tun. Ich habe dann gedacht ich hätte unsauber Programmiert. Also schrieb ich den Player neu mit PB5 64BIT. Siehe da - gleicher Effekt. nach 8 Songs kam der Absturz, dann nach 11, dann nach 10. MediaPlayer spielte aber alles ab....
Ich habe dann gedacht, das Design ists (Colorgadget etc) also raus damit. Player sah komisch aus, aber gleiches Problem, dann habe ich die Fonts rausgenommen (LoadFont) und nur noch auf Standard gelassen - auch keine Besserung. Buttons ihne JPEG gemacht. Auch nix.... boah. Kann ja nur noch MOVIE() Lib sein, also MCI genommen - ZACK Programm stürtzte wieder ab. Das gibt es doch nicht !! :shock:
Bin ja schlau, habe das Programmin reinstes Basic umgeschrieben und allen Schnickschnack (Design, Repeat und Co, Textanzeige etc) rausgelassen. UND : auch das Abspielen der Songs ist raus. Er tut nur noch so alsob das File abgespielt wird, aber er zählt nur die Zeit ab. Ist die Zeit genau so wie die Spielzeit simuliert er das nächste Lied.

3x raten was passiert :

Bild

Hier mein absolut popeliger Code für PB5 (64 Bit) ohne irgendwas anderes.... nur die Songs könnt Ihr ja ändern.

WO IST MEIN FEHLER ?? Ich dreh durch !!

Code: Alles auswählen

Dim file$(40)

Procedure lang(Path$)
  Protected AudioFileLength$ = Space(256)
  mciSendString_("open " + Chr(34) + Path$ + Chr(34) + " type MPEGVideo alias mp3audio", #Null, #Null, #Null)
  mciSendString_("status mp3audio length", @AudioFileLength$, 256, #Null)
  mciSendString_("close mp3audio", #Null, #Null, #Null)
  ProcedureReturn Val(AudioFileLength$)/1000
EndProcedure

hwnd=OpenWindow(0,0,0, 1280,1024, "MP3",#PB_Window_BorderLess)
 CreateGadgetList(hwnd)
 
  ContainerGadget(40,10,250,270,764)
   ListIconGadget(0,0,0, 290, 827, "Interpret",280,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines)
    AddGadgetItem(0,-1,"Neuer Ordner")
  CloseGadgetList()
 
  ContainerGadget(41,290,250,1260,764)
   ListIconGadget(1, 0,0,1280, 827, "Nummer",0,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines)
    AddGadgetColumn(1,1,"Interpret",400)
    AddGadgetColumn(1,2,"Titel",400)
  CloseGadgetList()

  StringGadget(3, 10, 145, 1260, 75, "",#PB_Text_Center|#PB_String_BorderLess);Titel
  StringGadget(2, 10,  80, 1260, 75, "",#PB_Text_Center|#PB_String_BorderLess);Sanger
  ButtonGadget(24, 490, 10, 110, 60, "x");ende
  
  StringGadget(31, 920,22, 170, 50, "00:00:00",#PB_String_BorderLess);time
  TextGadget(32,920,10,120,16,"Spielzeit :")
  
 file$(001)="D:\MP3s\Neuer Ordner\001. Rihanna - Diamonds.mp3"
 file$(002)="D:\MP3s\Neuer Ordner\002. Psy - Gangnam style.mp3"
 file$(003)="D:\MP3s\Neuer Ordner\003. Pink - Try.mp3"
 file$(004)="D:\MP3s\Neuer Ordner\004. Alicia Keys - Girl On Fire.mp3"
 file$(005)="D:\MP3s\Neuer Ordner\005. Emeli Sand - Read All About It (pt. Iii).mp3"
 file$(006)="D:\MP3s\Neuer Ordner\006. The Script Feat William - Hall Of Fame.mp3"
 file$(007)="D:\MP3s\Neuer Ordner\007. Birdy - People Help The People.mp3"
 file$(008)="D:\MP3s\Neuer Ordner\008. Will.I.Am Feat. Britney Spears - Scream & Shout.mp3"
 file$(009)="D:\MP3s\Neuer Ordner\009. Adele - Skyfall.mp3"
 file$(010)="D:\MP3s\Neuer Ordner\010. Seeed - Augenbling.mp3"
 file$(011)="D:\MP3s\Neuer Ordner\011. Cro - Einmal Um Die Welt.mp3"
 file$(012)="D:\MP3s\Neuer Ordner\012. Marteria, Yasha & Miss Platnum - Lila Wolken.mp3"
 file$(013)="D:\MP3s\Neuer Ordner\013. Klangkarussell - Sonnentanz.mp3"
 file$(014)="D:\MP3s\Neuer Ordner\014. Robbie Williams - Candy.mp3"
 file$(015)="D:\MP3s\Neuer Ordner\015. David Guetta Ft Sia - She Wolf (Falling To Pieces) (Extended Version).mp3"
 file$(016)="D:\MP3s\Neuer Ordner\016. Gossip - Move In The right Direction.mp3"
 file$(017)="D:\MP3s\Neuer Ordner\017. Bruno Mars - Locked Out Of Heaven.mp3"
 file$(018)="D:\MP3s\Neuer Ordner\018. Laing - Morgens Immer Muede.mp3"
 file$(019)="D:\MP3s\Neuer Ordner\019. Swedish House Mafia Feat. John Martin - Dont You Worry Child.mp3"
 file$(020)="D:\MP3s\Neuer Ordner\020. Icona Pop Feat. Charli Xcx - I Love It.mp3"
 file$(021)="D:\MP3s\Neuer Ordner\022. Lena - Stardust.mp3"
 file$(022)="D:\MP3s\Neuer Ordner\023. Mrs. Greenbird - Shooting Stars & Fairy Tales.mp3"
 file$(023)="D:\MP3s\Neuer Ordner\024. Sido - Bilder Im Kopf.mp3"
 file$(024)="D:\MP3s\Neuer Ordner\025. Flo Rida - I Cry.mp3"
 file$(025)="D:\MP3s\Neuer Ordner\026. Lenka - Everything At Once.mp3"
 file$(026)="D:\MP3s\Neuer Ordner\027. Nick Howard - Unbreakable.mp3"
 file$(027)="D:\MP3s\Neuer Ordner\028. Taylor Swift - We Are Never Ever Getting Back Together.mp3"
 file$(028)="D:\MP3s\Neuer Ordner\029. Kesha - Die Young.mp3"
 file$(029)="D:\MP3s\Neuer Ordner\030. Asaf Avidan & The Mojos - One Day-Reckoning Song (Wankelmut Remix).mp3"
 file$(030)="D:\MP3s\Neuer Ordner\033. Lykke Li - I Follow Rivers (The Magician Remix).mp3"
 file$(031)="D:\MP3s\Neuer Ordner\039. Carly Rae Jepsen - Call Me Maybe.mp3"
 file$(032)="D:\MP3s\Neuer Ordner\040. lana Del Rey - Summertime Sadness.mp3"
 file$(033)="D:\MP3s\Neuer Ordner\048. Loreen - Euphoria.mp3"
 dat=33
SetGadgetText(3,Str(dat)+" MP3s gefunden...")

main:   
Repeat
Delay(1)

 If play>0 
  ;- wenn Lied zuende
  If laufzeit=lan
   If CountGadgetItems(1)>0
    reihe+1
    If reihe>CountGadgetItems(1)
     reihe=0
    EndIf  
   EndIf
   SetGadgetState(1,reihe)
   MP3$=GetGadgetItemText(1,reihe,0)
   Goto Sprung
  EndIf
  S=Val(FormatDate("%ss",Date()))
  If S<>altss
   laufzeit+1
   SS+1
   altss=S
   If SS=60
    SS=0
    MM+1
    If MM=60
     MM=0
     HH+1
    EndIf
   EndIf
   SetGadgetText(31,RSet(Str(HH),2,"0")+":"+RSet(Str(MM),2,"0")+":"+RSet(Str(SS),2,"0")) 
  EndIf
 EndIf

event = WindowEvent()

 Select event
  Case #PB_Event_Gadget
   Select EventGadget()
    Case 0
     ver$=GetGadgetText(0)
     If ver$<>""
      ClearGadgetItems(1)
      If ver$="alle MP3s"
       suche$=".mp3"
      Else
       suche$="\"+ver$+"\"
      EndIf
      suchen:
      For t=1 To dat
       If FindString(UCase(file$(t)),UCase(suche$),1)<>0
        x=CountString(file$(t),"\")
        AddGadgetItem(1,-1,Str(t)+Chr(10)+ReplaceString(RemoveString(StringField(file$(t),x+1,"\"),".mp3")," - ",Chr(10)))
        While WindowEvent()<>0:Wend
       EndIf
      Next
     EndIf
     
    Case 1
     MP3$=GetGadgetText(1)
     If Trim(MP3$)<>"" And MP3$<>altmp3$
      Sprung:
      altmp3$=MP3$
      mp3=Val(MP3$)
      If file$(mp3)<>altfile$
       play+1
       If play=3
        play=1
       EndIf
       altfile$=file$(mp3)
       song$=RemoveString(GetFilePart(file$(mp3)),".mp3")
       temp$=ReplaceString(song$," - ","§")
       sanger$=Trim(StringField(temp$,1,"§"))
       titel$=Trim(StringField(temp$,2,"§"))
       laufzeit=0
       pause=0
       SS=-1
       MM=0
       HH=0
       lan=lang(file$(mp3))
       min=Int(lan/60)
       sek=lan-(min*60)
       SetGadgetText(32,"Spielzeit : "+RSet(Str(min),2,"0")+":"+RSet(Str(sek),2,"0"))
       reihe=GetGadgetState(1)
      EndIf
      SetGadgetText(2,sanger$)
      SetGadgetText(3,titel$) 
     EndIf
     Delay(1000); warten sonst ist Moviestatus noch 0
   
   Case 24
    End
    
   EndSelect
  EndSelect
 ForEver
SYNTAX ERROR IN 30! TYPE MISMATCH
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: DELAY() mit Fehler ?? Hilfe !!

Beitrag von STARGÅTE »

Das Problem ist folgendes:
Es hat nichts mit Delay() zu tun (das ist mehr oder weniger Zufall).
Problem liegt an dem "Goto Sprung", weil du damit in einen Select:Case-Block springst, ohne dass der über Select initialisiert wurde, dann aber nach dem Sprung über EndSelect beendet wird.

Vermeide Goto und benutze bitte dort eine Prozedur!
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Re: DELAY() mit Fehler ?? Hilfe !!

Beitrag von Stuhli »

das liebe alte Basic.....ich werds testen... das sind die Dinge die hängen geblieben sind. Danke !!
SYNTAX ERROR IN 30! TYPE MISMATCH
Antworten