Warum?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Warum?

Beitrag von Tsuki-Namida »

Hallo,
Warum kommt hier:
Until Event = #PB_Event_CloseWindow
Der Fehler:
Another 'End Condition'operand is expected here

???????????
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Keine Ahnung, ist ohne den restlichen Code schwer zu sagen.
Die Fehlermeldung sagt aus, dass du eine noch nicht geschlossene
Schleife oder If-Anweisung hast oder der Schleifenkopf evtl. der
falsche ist.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

1.) wo ist hier? :wink:
2.) bitte in zukunft einen aussagekrätigeren titel wählen.
3.) bitte in zukunft den source ebenfalls mitposten.
4.) dir fehlt (vermutlich) irgendwo ein EndIf.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Steht doch da, es fehlt entweder ein EndIf oder Du hast vielleicht gar kein Repeat. Wenn Du Deinen Source immer sauber formatierst, passiert sowas nicht :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ein EndIf fehlt nicht... wenn ich eins rein mache sagt er mir das ein EndIf zufiel ist.....

Code: Alles auswählen

; PureBasic Visual Designer v3.92 build 1460
Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
  ProcedureReturn Prg
  teste$ = Prg.s
EndProcedure

IncludeFile "RadioFenster.pb"
IncludeFile "winamp.pbi"


init = init_winamp("in_mp3.dll","out_wave.dll",hWindow)
If init=0
  Winamp_SetVolume(25)
  ;SetGadgetState(#TrackBar_0,1)
   ReadFile(0,"Conf.ini") 
   temp$ = ReadString()
   vol.l = Val(temp$) 
   Debug vol
   tempvol.l = 255
   tempvol / 10
   tempvol * vol
   Winamp_SetVolume(tempvol)
  ;SetGadgetState(#TrackBar_0,vol)
  EndIf

Open_Radio()
;Open_Add_URL()

;Dir.s = PathRequester("Bitte (WebRadio Dateien *.wr) Verzeichnis öffnen. ", "")

Dir.s = GetExePath()
Dir + "Listen\"
Dir + "Privat Webradio\"
Debug Dir
If ExamineDirectory(50, Dir, "*.wr")
 While NextDirectoryEntry()=1
  AddGadgetItem(#Listview_0,-1,DirectoryEntryName())
  Wend
EndIf
Dir.s = GetExePath()
Dir + "Listen\"
Dir + "Rundfunk Webradio\"
Debug Dir
If ExamineDirectory(50, Dir, "*.wr")
 While NextDirectoryEntry()=1
  AddGadgetItem(#Listview_0,-1,DirectoryEntryName())
  Wend
EndIf
Dir.s = GetExePath()
Dir + "Listen\"
Dir + "Eigene Sender\"
Debug Dir
If ExamineDirectory(50, Dir, "*.wr")
 While NextDirectoryEntry()=1
  AddGadgetItem(#Listview_0,-1,DirectoryEntryName())
  Wend
EndIf
Debug GetGadgetState(#Combo_0) ;GetGadgetState(#Combo_0)

Repeat ; Start of the event loop
  
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
Delay(1)
  
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
  
GadgetID = EventGadgetID() ; Is it a gadget event?
  
EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  


  
If EventType = #PB_EventGadget
  
 Debug GetGadgetState(#Combo_0)
    
 ClearGadgetItemList(#Listview_0)
 Dir.s = GetExePath()
 If GetGadgetState(#Combo_0)=0
  alle.l = 1
  ElseIf GetGadgetState(#Combo_0)=1
  Dir + "Listen\Rundfunk Webradio\"
  ElseIf GetGadgetState(#Combo_0)=2
  Dir + "Listen\Privat Webradio\"
  EndIf
  If alle = 1
   Dir + "Listen\Rundfunk Webradio\"  
    If ExamineDirectory(50, Dir, "*.wr")
     While NextDirectoryEntry()=1
     AddGadgetItem(#Listview_0,-1,DirectoryEntryName()) 
    
     Dir + "Listen\Privat Webradio\"
     If ExamineDirectory(50, Dir, "*.wr")
     While NextDirectoryEntry()=1
     AddGadgetItem(#Listview_0,-1,DirectoryEntryName())


    If alle = 0
    Debug Dir
     If ExamineDirectory(50, Dir, "*.wr")
      While NextDirectoryEntry()=1
       AddGadgetItem(#Listview_0,-1,DirectoryEntryName())
       Wend
     EndIf
    EndIf

    
    
    
    
    
    If Event = #PB_EventGadget
     If GadgetID = #Listview_0
      If EventType() = #PB_EventType_LeftDoubleClick
       If Play.l = 1      
        Winamp_Stop()
       EndIf      
       a.s=GetGadgetItemText(#Listview_0,GetGadgetState(#Listview_0),0)
       If a.s<>""
      ;If ReadFile(0,"Dir+a") 
       ReadFile(0,Dir+a) 
       url$ = ReadString()
       Debug ReadString()
       CloseFile(0)         
       hPlay=Winamp_Play(url$)
       Play.l=1
      ;Else
      ;MessageRequester("Fehler","Konnte eventuell den File nicht finden",0)                                                        ; wir schliessen den file was nicht unbedingt sein muss da es PB automat. schliesst   
      EndIf
      Debug url$

     EndIf
    EndIf
    ElseIf EventType() = #PB_EventType_LeftClick
     a.s=GetGadgetItemText(#Listview_0,GetGadgetState(#Listview_0),0)
     If a.s<>""
    ;If ReadFile(0,"Dir+a") 
      ReadFile(0,Dir+a) 
      url$ = ReadString()
      Debug ReadString()
      CloseFile(0)      
     EndIf
    EndIf
   ;EndIf

    
    
If Event = #PB_EventGadget
 If GadgetID = #Play
  If Play = 1
   Winamp_Stop()
  EndIf
      
 hPlay=Winamp_Play(url$)
 Play.l=1
 ElseIf GadgetID = #Stop
 Winamp_Stop()
 Play.l=0
     
 ElseIf GadgetID = #Config
 winamp_outconfig(WindowID())
 ElseIf GadgetID = #Neu
 Open_Add_URL()
      
 ElseIf GadgetID = #TrackBar_0
 If init=0
  tempvol.l = 255
  tempvol / 10
  tempvol * GetGadgetState(#TrackBar_0)
    ;tempvol * 10
    ;OpenFile(0,"Conf.ini")
    ;WriteStringN(GetGadgetText(#TrackBar_0))
    ;CloseFile(0)
  Winamp_SetVolume(tempvol)
  Debug tempvol
 EndIf
    ;Debug GetGadgetState(#TrackBar_0)
      
 ElseIf GadgetID = #Mute
 Winamp_SetVolume(25)
 SetGadgetState(#TrackBar_0,1)
      
 ElseIf GadgetID = #String_0
    
 ElseIf GadgetID = #String_1
      
 ElseIf GadgetID = #Ok
      
 name$ = "Listen\"
 name$ + GetGadgetText(#String_1)
 name$ + ".wr"
 Debug name$
 If OpenFile(0,name$)
  WriteStringN(GetGadgetText(#String_0))
  CloseFile(0)
  CloseWindow(#Add_URL)
  ClearGadgetItemList(#Listview_0)
  Dir.s = GetExePath()
  Dir + "Listen\"
  Debug Dir
  If ExamineDirectory(50, Dir, "*.wr")
   While NextDirectoryEntry()=1
    AddGadgetItem(#Listview_0,-1,DirectoryEntryName())
    Wend
  EndIf
  Else
  MessageRequester("Fehler","Fehler beim schreiben der Datei!",0)
  ;GetGadgetText(#String_1)
   EndIf
  ElseIf GadgetID = #Abbrechen
  CloseWindow(#Add_URL)
  EndIf
    
 EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
Zuletzt geändert von Tsuki-Namida am 01.12.2005 19:46, insgesamt 1-mal geändert.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

:shock: So, und nun lernst du mal gescheit Einrücken, so ist die Fehlermeldung doch kein Wunder ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

6 Schleifen oder If abfragen sind nicht geschlossen :D
Mach mal, wirste schon finden :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

While NextDirectoryEntry()=1
     AddGadgetItem(#Listview_0,-1,DirectoryEntryName()) 
Fehlt hier nen "wend" ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Fehlt hier nen "wend" ?
Eins ????
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

du musst schon wissen wo die EndIf's und Wend's fehlen. diese darfst du natürlich nicht einfach so irgendwo hinklatschen. :wink:

ausserdem würde ich mir einfach mal dieses beispiel hier anschauen:

Code: Alles auswählen

; Beispiel Umgang mit mehreren Fenstern (Kaskadierung)
; PAMKKKKK 21.September.2005
; PB 3.94.

;- Window Constants
Enumeration
  #Window_0
  #Window_1
  #Window_2
EndEnumeration

;- Gadget Constants
Enumeration
  #Text_0_1
  #Text_1_1
  #Text_2_1
  #Button_0_1
  #Button_1_1
  #Button_1_2
  #Button_2_1
EndEnumeration

; Die Fenster verpackt man, in Proceduren
; damit man Sie bei bedarf aufrufen kann

Procedure Open_Window_0() ; Hauptfenster
  If OpenWindow(#Window_0, 200, 200, 200, 100,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "Fenster 0") = 0
    MessageRequester("Fehler!", "Fehler beim öffenen von Fenster 0")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  If CreateGadgetList(WindowID()) = 0
    MessageRequester("Fehler!", "Gadget Liste Fenster 0 konte nicht erstellt werden!")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  TextGadget(#Text_0_1, 10, 10, 180, 20, "Klicken für Fenster 1",#PB_Text_Center )
  ButtonGadget(#Button_0_1, 65, 60, 70, 30, "Aufmachen")
  ProcedureReturn 1 ; alles OK
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 220, 220, 200, 100,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "Fenster 1") = 0
    MessageRequester("Fehler!", "Fehler beim öffenen von Fenster 1")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  If CreateGadgetList(WindowID()) = 0
    MessageRequester("Fehler!", "Gadget Liste Fenster 1 konte nicht erstellt werden!")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  TextGadget(#Text_1_1, 10, 10, 180, 20, "Willst du noch´n Fenster ?",#PB_Text_Center )
  ButtonGadget(#Button_1_1, 15, 60, 70, 30, "Abbruch")
  ButtonGadget(#Button_1_2, 115, 60, 70, 30, "Weiter")
  ProcedureReturn 1 ; alles OK
EndProcedure

Procedure Open_Window_2()
  If OpenWindow(#Window_2, 240, 240, 200, 100,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "Fenster 2") = 0
    MessageRequester("Fehler!", "Fehler beim öffenen von Fenster 2")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  If CreateGadgetList(WindowID()) = 0
    MessageRequester("Fehler!", "Gadget Liste Fenster 2 konte nicht erstellt werden!")
    ProcedureReturn 0 ; bei Fehler raus aus der Procedure
  EndIf
  TextGadget(#Text_2_1, 10, 10, 180, 20, "Nun ist aber gut!",#PB_Text_Center )
  ButtonGadget(#Button_2_1, 65, 60, 70, 30,  "Zurück")
  ProcedureReturn 1 ; alles OK
EndProcedure


; nun folgen die Proceduren die zur Steuerung des  Fensterwechsel nötig sind

Procedure Change_to_Window_1() ; Fenster 1 öffnen und  wechseln
  ; Fenster 0 deaktivieren (nicht schliessen)
  EnableWindow_(WindowID( #Window_0), #False)
  ;Fenster 0 sendet nun keine ereignisse mehr (ragiert nicht mehr)
  Open_Window_1() ; Fenster 1 Öffnen
EndProcedure

Procedure Close_Window_1() ; Fenster 1 schliessen
  CloseWindow(#Window_1) ; Fenster 1 schliessen
  EnableWindow_(WindowID( #Window_0), #True) ; Fenster 0 wieder Aktivieren (Windows API)
  UseWindow(#Window_0) ; Fenster 0 benutzen
  ActivateWindow() ; Fenster 0 nach vorne holen falls es Hinter anderen Fenstern war
EndProcedure

Procedure Change_to_Window_2() ; Fenster 2 öffnen und  wechseln
  ; Fenster 1 deaktivieren (nicht schliessen)
  EnableWindow_(WindowID( #Window_1), #False)
  ;Fenster 1 sendet nun keine ereignisse mehr (ragiert nicht mehr)
  Open_Window_2() ; Fenster 2 Öffnen
EndProcedure

Procedure Close_Window_2() ; Fenster 2 schliessen
  CloseWindow(#Window_2) ; Fenster 2 schliessen
  EnableWindow_(WindowID( #Window_1), #True) ; Fenster 1 wieder Aktivieren (Windows API)
  UseWindow(#Window_1) ; Fenster 1 benutzen
  ActivateWindow() ; Fenster 1 nach vorne holen falls es Hinter anderen Fenstern war
EndProcedure

;***********************************************
;- Programm start
;***********************************************

Open_Window_0() ; Hauptfenster öffnen

;***********************************************
;- Fenster Behandlung
;***********************************************
Repeat
  EventID = WaitWindowEvent() ; Welches Ereignisse trat auf
  WinID = EventWindowID() ; Welches der Fenster (Nummer) sendet das ereignis?
  Select EventID ; Start der Ereignis Behandlung (Fenster und Gadget)
    ; Fenster Behandlung:
    Case #PB_Event_CloseWindow ; Wenn das Ereignis "Fenster schliessen" ist
      Select WinID ; Welches hat Fenster schliessen gesendet?
        Case #Window_0 ; Es war Fenster 0 (es kann nur geschlossen werden wenn es Aktiv ist)
          End ; Wenn Fenster 0 zu schliessen ist dann PROGRAMM ENDE.
        Case #Window_1 ; Es war Fenster 1
          Close_Window_1() ; Fenster 1 zumachen und zu Fenster 0 wechseln
        Case #Window_2 ; Es war Fenster 2
          Close_Window_2() ; Fenster 2 zumachen und zu Fenster 1 wechseln
      EndSelect ; Ende der Fenster Behandlung
      ; Gadget Behandlung:
    Case #PB_EventGadget ; Wenn das Ereignisvon einem Gadget kam
      GadgetID = EventGadgetID() ; Gadgetnummer rausbekommen das gesendet hat
      Select GadgetID ; Nach Gadgetnummer reagieren
        Case #Button_0_1 ; Es war Knopf 0_1
          Change_to_Window_1() ; Fenster 0 deaktiviern und zu Fenster 1 wechseln
        Case #Button_1_1 ; Es war Knopf 1_1
          Close_Window_1() ; Fenster 1 schliessen zurück zu Fenster 0
        Case #Button_1_2 ; Es war Knopf 1_2
          Change_to_Window_2() ; Fenster 1 deaktiviern und zu Fenster 2 wechseln
        Case #Button_2_1 ; Es war Knopf 1_2
          Close_Window_2() ; Fenster 2 schliessen zurück zu Fenster 1
      EndSelect ; Ende der Gadget Behandlung
  EndSelect ; Ende der Ereignis Behandlung
ForEver ; Endet nur wenn Fenster 0 geschlossen wird.
End
vielleicht kannst du das als vorlage benützen um in zukunft, dein source besser verwalten zu können.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Antworten