Spezielles Problem mit SetGadgetState()

Für allgemeine Fragen zur Programmierung mit PureBasic.
aspicza
Beiträge: 11
Registriert: 18.04.2006 07:23
Kontaktdaten:

Spezielles Problem mit SetGadgetState()

Beitrag von aspicza »

Hallo!

Für die Mithilfe der Community wäre ich sehr dankbar:

---- CODE-Anfang ----
...

DateGadget(1000,10,10,250,20,"Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")

DateGadget(1001,10,50,250,20,"Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")

von.l=GetGadgetState(1000)

von+3600

...

SetGadgetState(1001,von)

...

---- CODE-Ende ----

obiger Quellcode funktioniert einwandfrei, wenn ich die Kompilierung aus Purebasic mit F5 durchführe und das Programm starte.

Wenn ich meinen Quellcode in eine EXE kompiliere, dann funktioniert SetGadgetState() in der EXE-Datei nicht.

Wer kann mir helfen? Handelt es sich um einen Bug???

Carpe Diem

Arndt
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 »

Hab den Code mal funktionstüchtig vervollständigt! Funktioniert in meiner Version als Exe, sowie in der IDE

Code: Alles auswählen

If OpenWindow(0, 100, 100, 150, 100, #PB_Window_SystemMenu, "")
  If CreateGadgetList(WindowID(0))
    DateGadget(0, 0, 0, 150, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")
    DateGadget(1, 0, 50, 150, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")
    von.l = GetGadgetState(0)
    von + 3600
    SetGadgetState(1, von)
  EndIf
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
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
aspicza
Beiträge: 11
Registriert: 18.04.2006 07:23
Kontaktdaten:

Beitrag von aspicza »

Vielen Dank für die schnelle Antwort aber..... :-)

Code

Code: Alles auswählen

If OpenWindow(0, 100, 100, 450, 400, #PB_Window_SystemMenu, "") 
  If CreateGadgetList(WindowID(0)) 
    DateGadget(0, 0, 0, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    DateGadget(1, 0, 50, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    ButtonGadget(2,0,100,100,100,"TEST")
    von.l = GetGadgetState(0) 
    von + 3600 
    SetGadgetState(1, von) 
  EndIf 
EndIf 
Repeat 
event=WaitWindowEvent() 

Select event
  Case #PB_Event_Gadget
  
    Select EventGadgetID()
    
    
      Case 2
      
        von+3600
        
        SetGadgetState(1,von)
    
    EndSelect
EndSelect    

Until event = #PB_Event_CloseWindow
Ich habe gerade gemerkt, dass ich in meinem ersten Teil vergessen habe zu erwähnen, dass die Erhöhung von 'von' durch einen Button erfolgt. Ich habe Deinen Quellcode entsprechend erweitert und mein Problem ist vorhanden: mit F5 kein Probelm, als EXE-Datei funktioniert es nicht.

Ich bin gespannt, ob es bei Dir klappt.

Carpe Diem

Arndt
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 »

Funktioniert einwandfrei!
Um dies zu verdeutlichen habe ich noch eine Zeile eingefügt, wenn der Button
gedrückt wird. Die Anzeige unten entspricht dann der von Oben plus einer
Stunde.

Code: Alles auswählen

If OpenWindow(0, 100, 100, 450, 400, #PB_Window_SystemMenu, "")
  If CreateGadgetList(WindowID(0))
    DateGadget(0, 0, 0, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")
    DateGadget(1, 0, 50, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii")
    ButtonGadget(2,0,100,100,100,"TEST")
    von.l = GetGadgetState(0)
    von + 3600
    SetGadgetState(1, von)
  EndIf
EndIf
Repeat
event=WaitWindowEvent()

  Select event
    Case #PB_Event_Gadget
   
      Select EventGadgetID()
     
     
        Case 2
          von.l = GetGadgetState(0)
          von+3600
         
          SetGadgetState(1,von)
     
      EndSelect
  EndSelect   

Until event = #PB_Event_CloseWindow
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
aspicza
Beiträge: 11
Registriert: 18.04.2006 07:23
Kontaktdaten:

HIIIIILFE!!! Bei mir funktioniert es nicht!!!

Beitrag von aspicza »

Code: Alles auswählen

If OpenWindow(0, 100, 100, 450, 400, #PB_Window_SystemMenu, "") 
  If CreateGadgetList(WindowID(0)) 
    DateGadget(0, 0, 0, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    DateGadget(1, 0, 50, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    ButtonGadget(2,0,100,100,100,"TEST") 
    von.l = GetGadgetState(0) 
    von + 3600 
    SetGadgetState(1, von) 
  EndIf 
EndIf 
Repeat 
event=WaitWindowEvent() 

  Select event 
    Case #PB_Event_Gadget 
    
      Select EventGadgetID() 
      
      
        Case 2 
          von.l = GetGadgetState(0) 
          von+3600 
          
          SetGadgetState(1,von) 
      
      EndSelect 
  EndSelect    

Until event = #PB_Event_CloseWindow
Bei mir funktioniert der oben geschriebene Code nicht!!!!!!!! Ich habe den Text von TS-Soft einfach nur kopiert und mit F5 gestartet. Wenn ich auf den Button klicke, dann passiert nichts. Auch mit der EXE funktioniert es nicht!!! Lösche ich

bei

CASE 2
von.l=GetgadgetState(0)

die Zeile 'von.l=GetGadgetState(0)', dann funktioniert es auch wieder mit F5. Aber in der EXE nicht.

WORAN LIEGT DAS??? Ich habe Windows XP Professional und Purebasic 3.94

Schöne Grüße

Arndt
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

so gehts auch mit der EXE (PB 3.94 und XP Pro):

Code: Alles auswählen

If OpenWindow(0, 100, 100, 450, 400, #PB_Window_SystemMenu, "") 
  If CreateGadgetList(WindowID(0)) 
    DateGadget(0, 0, 0, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    DateGadget(1, 0, 50, 250, 20, "Datum: %dd.%mm.%yyyy Uhrzeit: %hh:%ii") 
    ButtonGadget(2,0,100,100,100,"TEST") 
    von.l = GetGadgetState(0) 
    von + 3600 
    SetGadgetState(1, von) 
  EndIf 
EndIf 
Repeat 
event=WaitWindowEvent() 

Select event 
  Case #PB_Event_Gadget 
  
    Select EventGadgetID() 
    
    
      Case 2 
      
        von+3600 
        egal.l = GetGadgetState(0)
        SetGadgetState(1,von) 
    
    EndSelect 
EndSelect    

Until event = #PB_Event_CloseWindow
Warum das nur so geht, weiß ich leider nicht. Würde auf einen Bug tippen, aber vielleicht hat ja jemand noch eine Erklärung dafür.
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Antworten