SpinGadget - Bug?

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

SpinGadget - Bug?

Beitrag von RSBasic »

Hallo,

ich hab mal was programmiert und ich stellte fest, dass der SpinGadget einen Bug hat?

Beispiel 1 (Kein Problem):

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    SpinGadget(1,10,10,50,20,1,10000,0)
  EndIf
  SetGadgetText(1,"1")
  SetGadgetState(1,1)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      SetGadgetText(1,Str(GetGadgetState(1)))
  EndSelect
EndIf
Until EventID=#PB_Event_CloseWindow
EndIf
Beispiel 2 (Problem):

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    SpinGadget(1,10,10,50,20,1,60000,0)
  EndIf
  SetGadgetText(1,"1")
  SetGadgetState(1,1)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      SetGadgetText(1,Str(GetGadgetState(1)))
  EndSelect
EndIf
Until EventID=#PB_Event_CloseWindow
EndIf
Wenn man die Zahl erhöht oder verringert, dann funktioniert das garnicht.
Kann jemand dies bestätigen?
Wieso ist das so? :?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Geht doch alles?! :?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Bei Beispiel 2:
Bild

Nur weil ich bei Maximum "60000" eingestellt habe :?
Bei Beispiel 1 ist alles in Ordnung. (Maximum-Wert: 10000)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Genau das Gleiche kommt bei mir auch heraus, wenn ich den zweiten Source
probiere. Weiterhin habe ich geprüft, da wohl das Spingadget die Zahl 65535
ausgibt, die Hälfte davon als max zu setzen. Also 32767. Damit geht es noch
und es wird korrekt hochgezählt. Sobald ich um eins erhöhe, geht es nicht
mehr. Ich erhalte ebenfalls nur diese drei Werte. In der Hilfe steht auch
keine Beschränkung drinne :o ?
Bild
Win11 Pro 64-Bit, PB_6.11b1
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das klingt nach einem klassischen overflow.
wieder mal so ein Wert, der Window-seitig nur 16bit hat, signed Word,
deshalb kann die Grenze mit > nicht korrekt abgefragt werden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Nicht ganz :D. Das Negative wird unterschlagen. Denn da kann ich bis 65535, wenn ich weiter auf den Hochpfeil gedrückt halte, zählt er Rückwärts.

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    SpinGadget(1,10,10,50,20,-32767,32767,0); This ist to high and the max i can set to 32767 :(
  EndIf
  SetGadgetText(1,"1")
  SetGadgetState(1,1)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      SetGadgetText(1,Str(GetGadgetState(1)))
  EndSelect
EndIf
Until EventID=#PB_Event_CloseWindow
EndIf
Zuletzt geändert von Falko am 25.08.2008 21:55, insgesamt 2-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Kaeru Gaman
Ah danke für die Begründung der Ursache, ich hab mich schon gefragt, wieso das so ist.

Zwei Fragen habe ich:
1. Wie kann man das Problem beheben? Oder kann nur Fred das Problem beheben? Oder liegt das an Windows?

2. Kann jemand diesen Bug im englischen Forum ankündigen?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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 eine Windows-Limitation, ist bekannt, wurde hier bereits besprochen,
braucht nicht gemeldet werden, ....
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
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

MSDN hat geschrieben:CreateUpDownControl Function
Creates an up-down control. Note: This function is obsolete. It is a 16 bit function and cannot handle 32 bit values for range and position.
...dürfte das hier sein.
Windows 11 - PB 6.03 x64
_________________________________
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

OK, das ist schon klar, das Microsoft das hier schön erklärt:

http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Und das PB diese API aus comctl32.dll benutzt, welche wohl auch 16-Bit-Funktionen enthält.

Vielleicht könnte Andrè diese Windows und API-Limitierung in der Hilfe mit reinschreiben. Es sei denn, Fred programmiert ein eigenes Spingadget.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten