100% Cpu- Auslastung

Anfängerfragen zum Programmieren mit PureBasic.
Olaf de Viesel
Beiträge: 9
Registriert: 31.08.2009 02:04

Beitrag 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...
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 »

> 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.
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Olaf de Viesel
Beiträge: 9
Registriert: 31.08.2009 02:04

Beitrag 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...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Zuletzt geändert von Kaeru Gaman am 07.09.2009 20:30, insgesamt 1-mal geändert.
Olaf de Viesel
Beiträge: 9
Registriert: 31.08.2009 02:04

Beitrag 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...
PureBasic Version 4.31 x86
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Olaf de Viesel
Beiträge: 9
Registriert: 31.08.2009 02:04

Beitrag 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...
PureBasic Version 4.31 x86
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag 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.
PB 5.x & Win 7 64Bit
Olaf de Viesel
Beiträge: 9
Registriert: 31.08.2009 02:04

Re: 100% Cpu- Auslastung

Beitrag 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?
PureBasic Version 4.31 x86
Antworten