Seite 3 von 4

Verfasst: 07.09.2009 18:50
von Olaf de Viesel
Na der Code ist so ausführbar... das einzige was nicht drin ist ist der Code für den Info- Button ^^

Okay ich versuche es mal um zu schreiben...
Da gleich noch eine Frage: Ist es nun besser Select zu nehmen oder If als Abfrage?

Ich melde mich sobald ich ihn überarbeitet habe...

Verfasst: 07.09.2009 18:54
von ts-soft
> Ist es nun besser Select zu nehmen oder If als Abfrage?
Select ist übersichtlicher aber das spielt hier nicht die Rolle (Goto ist böhse meist)
Aber Dein Beispiel ist ohne Änderungen nicht kompilierbar, so das ich mir
nichtmal nen Überblick über den Aufbau der GUI schaffen kann, ohne Zeilen
anzupassen.

Verfasst: 07.09.2009 19:18
von Kaeru Gaman
Olaf de Viesel hat geschrieben:Na der Code ist so ausführbar...
nein ist er nicht!
selbst bei dir kann er das nicht sein, mindestens das unkommentierte (...) muss auch bei dir einen Fehler erzeugen.
schreib außerdem mal bitte deine PureBasic-Version in deine Signatur, anscheinend benutzt du eine Ältere.


Ferner...
hast du dir denn mal den Code von mir angesehen, wie das da gelöst ist?
wenn ich mir schon die Arbeit mache und extra für dich ein Beispiel schreibe,
ist es eigentlich das Minimum an Anstand dass du es zumindest zur Kenntnis nimmst.

Verfasst: 07.09.2009 19:42
von Olaf de Viesel
Okay hier der Komplette Code so wie es bei mir im Programm drinne steht:
(Ist jetzt aber verdammt unübersichtlich weil ich halt sehr viel probiert habe -.-)

Code: Alles auswählen


;// 1.A

If OpenWindow(0, 200, 200, 400, 200, "Shutdown Control", #PB_Window_TitleBar|#PB_Window_SystemMenu )

;// 2.A

  If CreateGadgetList(WindowID(0))
  TextGadget    (5,  10, 28, 200, 15,"Shutdown Status:")
  TextGadget    (6,  10, 40, 200, 8,"--------------------------------")
  ButtonGadget  (1, 260, 25, 120 , 24, "Neuer Countdown")
  ButtonGadget  (2, 260, 120, 120 , 24, "Info")
  ButtonGadget  (9, 260, 160, 120 , 24, "Exit")
  ButtonGadget  (3, 20, 160, 80  , 24, "Start")
  ButtonGadget  (4, 120, 160, 80 , 24, "Stop")
  TextGadget    (7,  10, 50, 200, 100,"", #PB_Text_Border) 
  TextGadget    (8,  150, 10, 200, 15,"") 
  ;CheckBoxGadget(0, 290,  90, 250, 20, "Neustarten")
  OptionGadget  (20, 270, 60, 90, 20, "Neustarten")
  OptionGadget  (21, 270, 80, 90, 20, "Herunterfahren")
  SetGadgetState(21, 1)

  EndIf
;// 2.E  

EndIf
;// 1.E 
 


;// Start Main- Programm

 Repeat  
     ;SmartWindowRefresh(0, 0) 

    EventID = WaitWindowEvent() 
    ;If EventID = 0
      ; Delay(1)
    ;EndIf 
   
;Until EventID = #PB_Event_CloseWindow  Or EventID = #PB_Event_Gadget
       
;// 4.A
       ;
       If EventID = #PB_Event_Gadget
       GadgetNummer = EventGadget()
       
;// Exit  ;// 5.A

          If GadgetNummer = 9
          End
          EndIf
          ;// 5.E

;// Info  ;// 6.A

          If GadgetNummer = 2
            MessageRequester("Infos","Programmierer: Olaf de Viesel"+ Chr(10) + "                          BGP- Studio"+Chr(10)+Chr(10)+" Version: Sep 1.1_09",0)
          EndIf 
          ;// 6.E
          
;// Start ;// 7.A

          If GadgetNummer = 3
          ;// 8.A
           If Start.l = 1
             Repeat
             ;EventID3 = #PB_Event_Gadget
             ;GadgetNummer2 = EventGadget()
             StartTime = ElapsedMilliseconds()
            
               Repeat
               Time.l = ElapsedMilliseconds()-StartTime 
               EventID3 = WindowEvent()
               GadgetNummer2 = EventGadget()
              
               ;SetGadgetText (7, Str(Time))    // DebugInfo
               Until Time.l = 1000
                          
               Sek.l = Sek.l -1
               SetGadgetText (7, "            Timer gestartet...(H : M : S)" + Chr(10) + Chr(10) + Chr(10) + "                            " + Str(Hou.l) + ":" + Str(Min.l) + ":" + (Str(Sek.l)))
 
               ;// 9.A
               If Sek.l <= 0
               Min.l = Min.l - 1
               Sek.l = Sek.l + 60
               ;// 10.A
               If Min.l < 0
                 Min.l = 0
                 Hou.l = Hou.l - 1
      
                  ;// 11.A
                  If Hou.l <> 0
                 ;Hou.l = Hou.l -1
                  Min.l = Min.l + 59
                  EndIf
                  ;// 11.E
                  ;// 12.A
                  If Hou.l <= 0
                  Hou.l = 0
                  Min.l = 0
                  Sek.l = 0
                  EndIf
                  ;// 12.E
               ;// 10.E 
               EndIf
              ;// 9.E
              EndIf
             
             Until Sek.l = 0 Or GadgetNummer2 = 4
            ;// 8.E
            EndIf
             ;// 13.A
             If GadgetNummer2 = 4
             SetGadgetText (7, "            Timer gestartet...(H : M : S)" + Chr(10) + Chr(10) + Chr(10) + "                            " + Str(Hou.l) + ":" + Str(Min.l) + ":" + (Str(Sek.l)) + Chr(10) + Chr(10) + "Timer gestoppt! Zum Fortsetzten 'Start' drücken!")
             EndIf
             ;// 13.E
             
;// Timer beendet
             ;// 14.A
             If Sek.l = 0
             State = GetGadgetState(20) 
             ;// 15.A
             If State = 1
             ;RunProgram("C:\Windows\System32\shutdown.exe","-r -t 10 -f","System wird in 10 Sekunden neu gestartet!") 
             Else
             ;RunProgram("C:\Windows\System32\shutdown.exe","-s -t 10 -f","System wird in 10 Sekunden Heruntergefahren!") 
             EndIf
             ;// 15.E

             
             EndIf
             ;// 14.E
             
          
          EndIf
          ;// 7.E


;// Neuer Countdown

          If GadgetNummer = 1
             
             If OpenWindow(1, 200, 200, 230, 200, "Shutdown Control", #PB_Window_TitleBar|#PB_Window_SystemMenu )

                If CreateGadgetList(WindowID(1))
                TextGadget    (10,  10, 30, 200, 15,"Timer:")
                TextGadget    (11,  10, 40, 200, 10,"--------------------------------")
                ButtonGadget  (12, 80, 160, 80  , 24, "Speichern")
                StringGadget  (14, 30,  60, 40, 20, "")
                StringGadget  (15, 90,  60, 40, 20, "")
                StringGadget  (16, 150,  60, 40, 20, "")
  

                EndIf
                
       
       
                Eingabe:
                Repeat
                
                
                
                EventID = WindowEvent()
                GadgetNummer = EventGadget()
                
               
                
                If GadgetNummer = 12
                 Sekunden$ = GetGadgetText (16)
                Sek.l = Val(Sekunden$)
                
                Minuten$ = GetGadgetText (15)
                Min.l = Val(Minuten$)
                
                Hour$ = GetGadgetText (14)
                Hou.l = Val(Hour$)
                
                 If Sek.l < 0
                 
                 MessageRequester ("ERROR" , "Falsche Eingabe! Überprüfung erforderlich!")
                 SetGadgetText (16," ")
                 Fehler = 1
                 EndIf
  
  
                 If Min.l < 0
                 Min.l = 0
                 MessageRequester ("ERROR" , "Falsche Eingabe! Überprüfung erforderlich!")
                 SetGadgetText (15," ")
                 Fehler = 1
                 EndIf
  
  
                 If Hou.l < 0
                 Hou.l = 0
                 MessageRequester ("ERROR" , "Falsche Eingabe! Überprüfung erforderlich!")
                 SetGadgetText (14," ")
                 Fehler = 1
                 EndIf
                 
                If Fehler = 1
                Fehler = 0
                Goto Eingabe:
                Else
                EventID = 1
                EndIf
                
                EndIf
                
                If EventID = #PB_Event_CloseWindow
                EventID = 1
                
                EndIf
                
                

                Until EventID = 1
                
                If Sek.l >= 60
                Repeat
                Min.l = Min.l + 1
                Sek.l = Sek.l - 60
                Until Sek.l <= 59
                EndIf 

  
                If Min.l >= 60
                Repeat
                Hou.l = Hou.l + 1
                Min.l = Min.l - 60
                Until Min.l <= 59
                EndIf
                
                SetGadgetText (7, "Timer initialisiert... " + Chr(10) + "Timer gestellt auf: " + Str(Hou.l) + ":" + Str(Min.l) + ":" + Str(Sek.l))
                Start.l = 1
                CloseWindow(1)
                ;    
             EndIf  
          
          
          EndIf
          
       
       EndIf


  Until EventID = #PB_Event_CloseWindow  
;EndIf

so und @Kaeru Gaman: Ich hab deinen Code zur Kenntnis genommen. Und nicht nur das. Ich habe meinen alten Code (siehe oben) jetzt verworfen und fange komplett neu an... Und ich bin wirklich über jede Hilfe dankbar... Es tut mir leid falss das jetzt anders rübergekommen ist.

So jetzt müsste aber alles gehen...
Desweiteren kommt beim Compilieren immer die Meldung, das ich die Veraltete Funktion "CreateGadgetListe()" benutze... weiß aber auch nicht wie ich das beheben kann...

Hab die Version 4.30 Beta 1...

Verfasst: 07.09.2009 19:55
von Kaeru Gaman
also, ich bekomma da immer noch die Meldung, dass in den Stringoperationen Klammern zu viel sind.

ok, du hast mehrere (Wait)WindowEvent() Calls drin, das solltest du lassen, damit kannst du teilweise Events verschlucken.
Bau das ganze mal als einzelne Eventschleife, wo du alles drin abwickelst, so ähnlich wie in meinem Beipiel.

Desweiteren kommt beim Compilieren immer die Meldung, das ich die Veraltete Funktion "CreateGadgetListe()" benutze... weiß aber auch nicht wie ich das beheben kann...

Olaf de Viesel hat geschrieben:Hab die Version 4.30 Beta 1...
solltest mal updaten, zumindest die Final benutzen, oder besser gleich die 4.31 final.

Verfasst: 07.09.2009 20:08
von Olaf de Viesel
echt?? bei mir kommen keine fehler...

ja ich muss mir erstmal so ein update kaufen, da ich mein pure basic aus dem normalen laden geholt habe... dauert eine weile...

Verfasst: 07.09.2009 20:33
von Kaeru Gaman
...Str(Hou.l) + ":" + Str(Min.l) + ":" + (Str(Sek.l)))
die zusätzlichen Klammern sind zu viel, vielleicht kommt bei dir keine Meldung weil die version älter ist.

wenn du noch das Paket aus dem Laden hast, wieso hast du denn ne Beta?
eigentlich müßtest du dann eine 4.0 haben.

Verfasst: 07.09.2009 20:50
von Olaf de Viesel
ja das könnte sein...

gute frage wo ich die herhabe... also auf meiner cd ist version 4.00 drauf...
irgendwo muss es die mal gegeben haben zum download als update...

hole mir aber sowieso dann nächste woche das andere update...

Verfasst: 09.09.2009 03:47
von K.Putt
Übrigens kann ein Delay (~>50) in der Window-Eventschleife auch den Bildaufbau der Gagdets sichtbar verlangsamen (z.B. bei Statusbar oder ContainerGadget mit SetGadgetColor) - nicht nur beim Start des Programmes, sondern auch jedesmal bei Minimize to Maximize. Das selbst bei wenigen Gadgets.

Re: 100% Cpu- Auslastung

Verfasst: 09.10.2009 18:40
von Olaf de Viesel
so habe jetzt die 4.31 final...

und zwar @Kaeru Gaman:

in deinem Code heißt eine Zeile: "If COUNT..." .
kannst du mir bitte erklären wieso das hier geht und was er da genau macht? ^^
weil eig müsste er doch dort überprüfen ob die var irgendeine bedingung erfüllt, oder?