Seite 1 von 1

Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 10:51
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 !

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 10:57
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.

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 11:13
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.

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 11:22
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.

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 11:37
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:

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 11:47
von NicTheQuick
Chat-Forum? Meinst du die privaten Nachrichten?

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 13:10
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:

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 02.08.2017 17:31
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

Re: Programm beenden im Main Loop ? Case Abfrage !

Verfasst: 03.08.2017 14:42
von Torr
Vielen Dank Sicro !
Ja dein Code funktioniert !

Vielen,vielen Dank ! :D