Seite 1 von 1

Reihenfolge GadgetID's ? [hat sich erledigt]

Verfasst: 30.04.2006 15:03
von Falko
Irgendwie verstehe ich die ID's nicht. Kann es sein, das die TrackbarGadgets mit der ID 0.. anfangen müssen, oder
liegt das vielleicht am Debugger?

Hier zwei Beispiele, wobei ich beim Letzteren die Reihenfolge der Gadgets geändert habe.

Hier werden die geänderten Werte im Debugger korrekt angezeigt

Code: Alles auswählen

Global a
Global b

Procedure.q DELAYUS(t.l) ; Rechnerabhängig!
  Shared hitimecount1.q,hitimecount2.q,hitimefreq.q
  QueryPerformanceFrequency_(@hitimefreq)
  QueryPerformanceCounter_(@hitimecount1)
  Repeat 
    QueryPerformanceCounter_(@hitimecount2)
  Until (hitimecount2 - hitimecount1)/(hitimefreq/1000000)=>t
Result.q=(hitimecount2 - hitimecount1)/(hitimefreq/1000000)
ProcedureReturn Result
EndProcedure 

Procedure DeineProzedur(Wert.l)
    Repeat
      Debug Str(DELAYUS(a) ) + "  "+Str(DELAYUS(b))
      Delay(0)
    ForEver

    EndProcedure
    
a=1500:b=1500  
CreateThread(@DeineProzedur(), 0)
If OpenWindow(0,0,0,250,100,"Delayus",#PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
  TrackBarGadget(0,35,10,200,30,10,20)
  TrackBarGadget(1,35,50,200,30,10,20)
  TextGadget    (2, 5,15, 30, 20,"Joy-A")
  TextGadget    (3, 5,55, 30, 20,"Joy-B")
EndIf
SetGadgetState(0,15)
SetGadgetState(1,15)
Repeat
  Event=WaitWindowEvent()
  Select EventGadget()
    Case 0
      a=GetGadgetState(0)*100
    Case 1
      b=GetGadgetState(1)*100
  EndSelect
Until Event=#PB_Event_CloseWindow
Und hier nicht

Code: Alles auswählen

Global a
Global b

Procedure.q DELAYUS(t.l) ; Rechnerabhängig!
  Shared hitimecount1.q,hitimecount2.q,hitimefreq.q
  QueryPerformanceFrequency_(@hitimefreq)
  QueryPerformanceCounter_(@hitimecount1)
  Repeat 
    QueryPerformanceCounter_(@hitimecount2)
  Until (hitimecount2 - hitimecount1)/(hitimefreq/1000000)=>t
Result.q=(hitimecount2 - hitimecount1)/(hitimefreq/1000000)
ProcedureReturn Result
EndProcedure 

Procedure DeineProzedur(Wert.l)
    Repeat
      Debug Str(DELAYUS(a) ) + "  "+Str(DELAYUS(b))
      Delay(0)
    ForEver

    EndProcedure
    
a=1500:b=1500  
CreateThread(@DeineProzedur(), 0)
If OpenWindow(0,0,0,250,100,"Delayus",#PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
  TextGadget    (0, 5,15, 30, 20,"Joy-A")
  TrackBarGadget(1,35,10,200,30,10,20)
  TextGadget    (2, 5,55, 30, 20,"Joy-B")
  TrackBarGadget(3,35,50,200,30,10,20)
EndIf
SetGadgetState(1,15)
SetGadgetState(3,15)
Repeat
  Event=WaitWindowEvent()
  Select EventGadget()
    Case 0 ; [edit] musste hier noch geändert werden (1)[/edit]
      a=GetGadgetState(1)*100
    Case 1 [edit] musste hier noch geändert werden (3)[/edit];
      b=GetGadgetState(3)*100
  EndSelect
Until Event=#PB_Event_CloseWindow

Verfasst: 30.04.2006 16:02
von HeX0R
Ähmm... wenn du schon die GadgetIDs änderst, solltest du auch den Select EventGadget() ganz unten entsprechend anpassen...

Verfasst: 30.04.2006 16:07
von Falko
Oh, man. Hab ich's doch übersehen.

Die cases... :oops:

Danke

Verfasst: 30.04.2006 17:36
von ts-soft
Nicht nur die Cases sind verkehrt

Code: Alles auswählen

Global a
Global b

Procedure.q DELAYUS(t.l) ; Rechnerabhängig!
  Shared hitimecount1.q,hitimecount2.q,hitimefreq.q
  QueryPerformanceFrequency_(@hitimefreq)
  QueryPerformanceCounter_(@hitimecount1)
  Repeat
    QueryPerformanceCounter_(@hitimecount2)
  Until (hitimecount2 - hitimecount1)/(hitimefreq/1000000)=>t
Result.q=(hitimecount2 - hitimecount1)/(hitimefreq/1000000)
ProcedureReturn Result
EndProcedure

Procedure DeineProzedur(Wert.l)
    Repeat
      Debug Str(DELAYUS(a) ) + "  "+Str(DELAYUS(b))
      Delay(0)
    ForEver

    EndProcedure
   
a=1500:b=1500 
CreateThread(@DeineProzedur(), 0)
If OpenWindow(0,0,0,250,100,"Delayus",#PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
  TextGadget    (0, 5,15, 30, 20,"Joy-A")
  TrackBarGadget(1,35,10,200,30,10,20)
  TextGadget    (2, 5,55, 30, 20,"Joy-B")
  TrackBarGadget(3,35,50,200,30,10,20)
EndIf
SetGadgetState(1,15)
SetGadgetState(3,15)
Repeat
  Event=WaitWindowEvent()
  If Event = #PB_Event_Gadget
    Select EventGadget()
      Case 1
        a=GetGadgetState(1)*100
      Case 3
        b=GetGadgetState(3)*100
    EndSelect
  EndIf
Until Event=#PB_Event_CloseWindow
If Event = #PB_Event_Gadget fehlte auch :wink:

Verfasst: 30.04.2006 17:44
von Falko
Danke Thomas, das fehlte auch :allright:

Was noch nicht richtig ist, das Delayus für Microsekunden.
Hängt wohl mit dem Thread und die Windowsereignisse zusammen.

Gruß Falko