Programm beenden im Main Loop ? Case Abfrage !

Anfängerfragen zum Programmieren mit PureBasic.
Torr
Beiträge: 21
Registriert: 20.08.2014 12:06

Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Torr »

Hallo an alle hier im Forum.
Folgender Code Schnipsel funktioniert, aber meine Frage ist ob ich diesen Code
verkleinern kann ?

Code: Alles auswählen

 Case #Button_Exit
          	Result = MessageRequester("Exit Program !", "Close Program ?"+#CRLF$+"Feedback to"+#CRLF$+"OscarGolf3@gmail.com", #PB_MessageRequester_YesNo | #PB_MessageRequester_Info   )  
						If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt dann Exit Programm
							Quit = 1							
						End 	
						EndIf 
              EndSelect     
            Case #PB_Event_CloseWindow                ; Ereignis des Fensters
            	Result = MessageRequester("Exit Program !", "Close Program ?"+#CRLF$+"Feedback to"+#CRLF$+"OscarGolf3@gmail.com", #PB_MessageRequester_YesNo | #PB_MessageRequester_Info   )  
						If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt dann Exit Programm
							Quit = 1							
						End 	
						EndIf 
ButtonGadget (#Button_Exit) beendet das Programm !
Close Window beendet auch das Programm !
In der Hilfe habe ich gelesen das man Case Zuweisungen Verschachteln kann !?!
aber das funktioniert bei mir nicht.
Und ganz großen Dank an MIB (kann alles weiß alles usw.)
Die Auto Abspielfunktion in meinem Media Player (ExplorerListGadget) Funktioniert.....
und auch an TS-Soft (Thomas Schmidt)
für den Wrapper (ich glaube so nennt man das ?) LibZPlay() .dll

Noch eine Frage ,
Mit dem Befehl DIM() (FFTArray) erstelle ich ein Array von z.B. 32 Werten.
Ich lese jetzt das Array folgendermaßen aus

Code: Alles auswählen

Global Dim FFTArray.i(31)
Array Größe 32 ? also 0-31 = 32 Werte ?
das Array sind Integer Werte .
Das Auslesen erreiche ich durch Beispiel Code:

Code: Alles auswählen

        ProgressBarGadget(15,5,440,400,20,0,100)
        ProgressBarGadget(16,5,460,400,20,0,100)
        ProgressBarGadget(17,5,480,400,20,0,100)
        ProgressBarGadget(18,5,500,400,20,0,100)

                SetGadgetState(15,FFTArray(0))
            	SetGadgetState(16,FFTArray(1))
            	SetGadgetState(17,FFTArray(2))
            	SetGadgetState(18,FFTArray(3))
usw.
Meine Frage ist, um das Array auszulesen muss ich jeden Wert des Arrays hier 0-31 einzeln abfragen,
oder kann ich das auch z.b. in eine Grafische Funktion umwandeln?
z.B. Befehl

Code: Alles auswählen

LineXY() bzw. Box()
So nochmals vielen Dank an MIB und TS-Soft.
Gruß Torr !
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von RSBasic »

Torr hat geschrieben:In der Hilfe habe ich gelesen das man Case Zuweisungen Verschachteln kann !?!
Du kannst deine Beenden-Abfrage in eine Prozedur verschieben, die du wiederverwenden kannst:

Code: Alles auswählen

EnableExplicit

Define Quit

Procedure Exit()
  Protected Result
  
  Result = MessageRequester("Exit Program !", "Close Program ?"+#CRLF$+"Feedback to"+#CRLF$+"OscarGolf3@gmail.com", #PB_MessageRequester_YesNo | #PB_MessageRequester_Info   ) 
  If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt dann Exit Programm                 
    ProcedureReturn 1
  EndIf
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 100, 20, "Beenden", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            Quit = Exit()
        EndSelect
      Case #PB_Event_CloseWindow
        Quit = Exit()
    EndSelect
  Until Quit
EndIf
Oder du benutzt BindEvent.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von GPI »

Torr hat geschrieben:Das Auslesen erreiche ich durch Beispiel Code:

Code: Alles auswählen

        ProgressBarGadget(15,5,440,400,20,0,100)
        ProgressBarGadget(16,5,460,400,20,0,100)
        ProgressBarGadget(17,5,480,400,20,0,100)
        ProgressBarGadget(18,5,500,400,20,0,100)

                SetGadgetState(15,FFTArray(0))
            	SetGadgetState(16,FFTArray(1))
            	SetGadgetState(17,FFTArray(2))
            	SetGadgetState(18,FFTArray(3))
Tip: Ich würde nicht mehr mit festen Gadgetnummern arbeiten sondern nur mit #PB_Any.

Code: Alles auswählen

  dim GProgress(31)
 y=440
  for i=0 to 31
    GProgress(i)= ProgressBarGadget(#pb_any,5,y,400,20,0,100):y+20
    SetGadgetState(GProgress(i),FFTArray(i) )
  next
 debug y ; ab diesen Wert kannst du weiterarbeiten. Wird aber ein großes Fenster
 ; Tipp, wenn du zweispaltig arbeiten willst: Zeile=i % 15: Spalte= i/15

Code: Alles auswählen

usw.
Meine Frage ist, um das Array auszulesen muss ich jeden Wert des Arrays hier 0-31 einzeln abfragen,
oder kann ich das auch z.b. in eine Grafische Funktion umwandeln?
Verstehe die Frage nicht, aber du kannst eine For-Next-Schleife benutzen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Andesdaf »

Torr hat geschrieben: Meine Frage ist, um das Array auszulesen muss ich jeden Wert des Arrays hier 0-31 einzeln abfragen,
oder kann ich das auch z.b. in eine Grafische Funktion umwandeln?
z.B. Befehl

Code: Alles auswählen

LineXY() bzw. Box()
das geht nicht direkt per Funktionsaufruf, das musst du per Hand machen. Für eine einfache Darstellung
ist das aber relativ schnell erledigt.
Win11 x64 | PB 6.00 (x64)
Torr
Beiträge: 21
Registriert: 20.08.2014 12:06

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Torr »

Nun wollte ich mich bei allen Bedanken, die mir auf meine Frage geantwortet haben,aber
ich glaube das ich zu Doof bin, mich hier im Chat-Forum zu unterhalten.
Habe
RS-Basic
GPI
Andesdaf

geantwortet kann aber meine Antworten nicht lesen ???

Glaub ich bin zu Alt...... :oops:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von NicTheQuick »

Chat-Forum? Meinst du die privaten Nachrichten?
Bild
Torr
Beiträge: 21
Registriert: 20.08.2014 12:06

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Torr »

Hallo Nic the Quick
nein nicht im Privaten Chat Bereich jetzt hier im Lokalem...
Ahh jetzt alles, klar man nehme den Antwort Button...
bin ich blöd...
Sorry an alle..... :roll:
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Sicro »

Torr hat geschrieben:Folgender Code Schnipsel funktioniert, aber meine Frage ist ob ich diesen Code
verkleinern kann ?
Zum Beispiel so:

Code: Alles auswählen

  Case #Button_Exit
    PostEvent(#PB_Event_CloseWindow, EventWindow())
  EndSelect
Case #PB_Event_CloseWindow                ; Ereignis des Fensters
  Result = MessageRequester("Exit Program !", "Close Program ?"+#CRLF$+"Feedback to"+#CRLF$+"OscarGolf3@gmail.com", #PB_MessageRequester_YesNo | #PB_MessageRequester_Info   )
  If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt dann Exit Programm
    Quit = 1
    End
  EndIf
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Torr
Beiträge: 21
Registriert: 20.08.2014 12:06

Re: Programm beenden im Main Loop ? Case Abfrage !

Beitrag von Torr »

Vielen Dank Sicro !
Ja dein Code funktioniert !

Vielen,vielen Dank ! :D
Antworten