Een onverwachte crash in een programma dat al draaide op Gambas en elders geïnstalleerd werd:
Type mismatch: wanted Integer, got Float instead
De foutmelding leidde naar een regel met een Spinbox:
DateAdd(dRunner, gb.Minute, SpinBoxTimeSlice.Value)
Ik heb de waarde van een SpinBox altijd als een geheel getal gebruikt, en dat werkte ook altijd zo. Maar uit de foutmelding leid ik nu af dat de spinboxwaarde een Float geeft ipv vroeger een integer. Als ik de waarde omzet naar integer werkt het terug.
DateAdd(dRunner, gb.Minute, CInt(SpinBoxTimeSlice.Value))
- Het werkte nog wel in Gambas 3.18.x
- … verandering ?
- Het werkte niet meer in Gambas 3.21.0
Is er iets veranderd aan SpinBox in Gambas 3.21 ? Ja, veel !
De gevolgen: meestal geen…
- Bij
Date(Year(now()), Month(now()), SpinBoxDay.Value)worden de parameters omgezet naar int, dus geen probleem. - Bij bewerkingen en vergelijkingen zoals groter dan geen probleem;
- Bij
Select SpinBoxDay.Valueook geen probleem. - Bij DateAdd wordt de laatste parameter niet intern omgezet naar integer. (Dat is op zich geen probleem, zolang je maar het juiste type parameter meegeeft – maar het gedrag verschilt van bv Date(..) waar de parameter automatisch wordt omgezet. Dit kwam ter sprake op de mailinglist…)
Op 25/03/2026 schreef Benoît Minisini dat het opgelost was in “de laatste commit”, dus ik vermoed dat het vanaf 3.21.6 ongeveer zal aangepast zijn (voor DateAdd).
Maar er blijven nog wel andere problemen, want de SpinBox.Value waarde wordt ook elders gebruikt, en die is duidelijk veranderd van Integer naar Float. Dat kan je zien aan de nieuwe eigenschap “precision” die plots opduikt, en die toelaat om de spinbox met komma’s te laten werken.
Voorbeeld waarbij die onverwacht programma’ kunnen breken:
print 60 Div SpinBoxTimeSlice.Value
print i Mod SpinBoxTimeSlice.Value