Eindelijk weer eens een werkende combinatie gevonden bij het nieuw installeren van een pc. Voor Leap 16.x is momenteel (nog) geen officiële versie verkrijgbaar, maar nu is er dus wel deze combinatie voor Tumbleweed die werkt.
Andere verkrijgbare versies voor Tumbleweed waren op dit moment: 3.20.4, 3.21.6 en 3.22.99 (van master).
Om het NoSSL probleem op te vangen wordt DataContext uitgebreid met:
Public Sub checkMariaDbSkipSSL() as Integer
– checkt of de config bestaat en de settings er zijn
– positief als die er is
– negatief als die er niet is (of niet volledig) en stuurt uitleg naar sLastLog
Public Sub initMariaDbNoSSL() as Integer
– checkt het bestaan van .my.cnf
– creert die als die niet bestaat (copy uit interne my.cnf met gambasfixnossl header en waarden ssl-verify-server-cert=0 en ssl-mode=DISABLED en voegt de nodige waarden toe)
Public Sub getMariaDbNoSSL() as Integer
– geeft de waarde uit settings
Public Sub setMariaDbNoSSL(i as Integer)
– zet de waarde in settings op i die 0= niet, 1 = wel, of -1 error moet zijn
Public Sub makeNoSSLConnection(hConn as Connection, sDataSet as String) as Boolean
Bij het starten van gambas uit het menu duikt alleen een venster op:
This application has raised an unexpected error and must abort
Unable to find method Application_Log in class Project. Symbol not found.
[gb.jit].CCompilation.Wait.247
[Ok]
Ook op de commandolijn kan je wel de versie van gambas opvragen met gambas3 –version, maar niet de IDE starten met gambas3 (zie onderaan).
Op de commandolijn kan je starten met een environment variabele om JIT uit te schakelen:
env GB_NO_JIT=true gambas3
Dan start de IDE wel op (zonder de JIT compiler (?).
Ps: de reaktie bij gewone start van de commandline:
gambas3
MESA: warning: Driver does not support the 0x7d67 PCI ID. MESA: warning: Driver does not support the 0x7d67 PCI ID. MESA: error: ZINK: vkEnumeratePhysicalDevices failed (VK_ERROR_INITIALIZATION_FAILED) MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen failed to load driver: zink gb.jit: error: unable to compile JIT pointers of 'gb.form.terminal': | gcc: error: unrecognized command line option ‘-std=gnu17’; did you mean ‘-std=gnu11’? | ** ** OOPS! INTERNAL ERROR. Program aborting, sorry! :-( ** Unable to compile JIT source file ** ** gbr3: error: [gb.jit].CCompilation.Wait.247: Unable to find method Application_Log in class Project. Symbol not found ** ** Please send a bug report to the gambas bugtracker [1] or to the gambas mailing-list [2]. ** [1] https://gambaswiki.org/bugtracker ** [2] https://lists.gambas-basic.org/#user **
Een variabele declareren kan in een module of form code bv zo:
Public iSomeNumber As Integer
Private iSomeOther As Integer Private sSomeName As String
OF binnen een procedure/functie zo:
Public sub myProcedure Dim iSomeNumber ... End
Vrijgeven
Je hebt hier in al die jaren nog niet gelezen hoe een variabele terug vrijgegeven wordt.
Dat komt omdat je dat normaal niet zelf doet, er is een soort automatische “huisvuilophaling” voor de variabelen, nl als het bereik of de “scope” verdwijnt.
Hierboven dus aan het einde van de procedure myProcedure, of aan het einde van de module of form waar de public/private gedeclareerd werden.
Maar het kan wel expliciet: met NULL:
iSomeNumber = Null
sSomeName = Null
Het doet niet veel, zelfs nadien kan je sSomeName nog aanroepen, die zal alleen leeg zijn, niet ongeldig.
Pointers
Bij pointers bestaat er wel een Free, maar pointers gebruik je normaal alleen als interface met externe c libraries, zie https://gambaswiki.org/wiki/howto/extern
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.
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.Value ook 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
Spijtig genoeg weer niet verkrijgbaar: gambas3.x op OpenSUSE Leap 16.0. Niet aanwezig in de repos. Nb: Ik heb Gambas 3.20.99 al draaien op een OpenSUSE Leap 16.0 die geupgrade is van 15.6 of zo, en waarin Gambas geïnstalleerd was.
Compile from source beschrijving ondertussen ook niet meer bijgewerkt om te kloppen met 16.0. Installatie met zypper in van automake en libtool gaan nog wel.
Foutmelding op:
‘alure-devel’ is niet aangetroffen in pakketnamen - de eigenschappen worden nu geprobeerd. Geen enkel item biedt ‘alure-devel’ aan. ‘gstreamermm-devel’ is niet aangetroffen in pakketnamen - de eigenschappen worden nu geprobeerd. Geen enkel item biedt ‘gstreamermm-devel’ aan.
En ook apart staande webkitgtk3 moeten we overslaan:
zypper install -y webkitgtk3-devel
‘webkitgtk3-devel’ is niet aangetroffen in pakketnamen - de eigenschappen worden nu geprobeerd.
Geen enkel item biedt ‘webkitgtk3-devel’ aan.
En na ./reconf-all en ./configure -C -q krijgen we :
Vroeger kon je die openen in Yast, maar nu yast verdwenen is … misschien met “Ontdekken” (Discover). Daarbij wordt het (gebruikers-) wachtwoord gevraagd. Er komt een foutmelding ivm afhankelijkheden die niet opgelost kunnen worden. Andere versies proberen, bv?
Experiment met listboxen voor log en foutberichten op scherm en Ik kan de logberichten daarin zetten met lsbx.Add(s, 0) .
Maar ik wil het op een minder storende manier:
Ik heb op mijn Form een aparte listbox voor fouten lsbxErr en één voor gewone logberichten lsbxLog
Die zitten samen in een dichtklapbaar parent (Expander), zodat ze niet in de weg staan als ze niet relevant zijn.
Als het maximaal aantal lijnen in de listbox (iSize) is overschreden, wordt de oudste lijn verwijderd (onderste)
Form content here.. …. …. Expander with lsbx’s starts under here :
Note: expanded = lsbx’s visible
lsbxLog: – log line 0 – log line 1 ..
lsbxEr: – err line 0 – err line 1 …
Zet de instellingen van de form objecten:
Form Arrangement: vertical
Form content Expand: True
Expander.Arrangement: Horizontal
Expander Expand: True
Iedere listbox Expand: True
We willen het verloop van de berichten zo:
Een logbericht komt bovenaan bij in lsbxLog, en verandert niets aan de zichtbaarheid (als Expander open of gesloten stond blijft dat zo)
Een errormessage komt bovenaan in de lsbxError, en opent de parent Expander.
Het laatste bericht komt als Tooltip te staan van de eigen Listbox én als text van de parent expander; bij gesloten expander is zo het laatste bericht leesbaar.
Om hetzelfde te kunnen doen op al onze forms zetten we de code in MMain:
Public Const csHide As String = "h"
Public Const csShow As String = "s"
Public Const csUnchanged As String = "u"
Public iMaxLsbxLen As Integer = 100
Public Sub addToListbox(lsbx As ListBox, s As String, iSize As Integer, sHideShowUnchanged As String, bCompress As Boolean)
Dim myExpanderParent As Expander
lsbx.Tooltip = s
If lsbx.Tag = "" Then
lsbx.Tag = 0
Endif
' add to list if needed
If bCompress And lsbx.Count > 0 Then
' show repeated item with added string and keep in mind when comparing again..
If (lsbx[0].Text = s) Or (lsbx[0].Text = s & " (++)") Then
If lsbx[0].Text = s
lsbx[0].Text &= " (++)" ' show it is repeated several times
Endif
lsbx.Tag = lsbx.Tag + 1 ' last consecutive count
Else
lsbx.Add(s, 0)
lsbx.Tag = 1
Endif
lsbx.Tooltip &= " (R:" & lsbx.Tag & ")"
Else
lsbx.Add(s, 0)
Endif
' add size
lsbx.Tooltip &= "; Size:" & lsbx.Count
' adjust parent to make message visible even with closed expander
myExpanderParent = lsbx.Parent
Try myExpanderParent.Text = s
Try myExpanderParent.Tooltip = lsbx.Name
If Error Then
Message.Error(Error.Text)
Endif
' keep within limits
If lsbx.Count > IIf(isize, iSize, iMaxLsbxLen) Then
Try lsbx.Remove(IIf(isize, iSize, iMaxLsbxLen))
If Error Then
Print "Could not trim " & lsbx.Name & ": " & Error.Text
Endif
Endif
' does this trigger the parent to expand to make change visible?
Select sHideShowUnchanged
Case "h"
Try myExpanderParent.Hidden = True ' assume parent is Expander
Case "s"
Try myExpanderParent.Hidden = False ' assume parent is Expander
Case Else ' incl empty
' leave unchanged
End Select
If Error Then
Message.Error(Error.Text)
Endif
End
Algemene uitleg over gambas, momenteel in versie 3.x: (zie ook Wat is Gambas)
Gambas3 IDE
Dat is de programmeeromgeving om Gambas programma’s te maken. Als je zelf programma’s wil maken moet je opletten dat je de gambas “IDE” mee installeert!
Project
Een nieuw project maakt een directory aan met daarin alles wat met het project te maken heeft:
instellingen
code
scherm-ontwerpen (indien desktop-project)
teksten als README, help, licentie..
icoon voor project (voor eventuele link desktop)
beeldmateriaal voor iconen op knoppen of start/about scherm
…
Er zijn veel voorbeeldprogramma’s beschikbaar die je kan openen in de IDE om te kijken hoe Gambas werkt, als broncode-archief of via git.
Broncode-archief
De Gambas IDE maakt het gemakkelijk om de broncode van je project klaar te zetten voor transport: met een export functie maak je een standaard Linux .tag.gz bestand.
Als je zo’n .tar.gz bestand krijgt of download, kan je het uitpakken met tar -xzvf naam.tar.gz, en dan maakt dat de projectdirectory, zodat je het project kan openen in de IDE.
CLI
Je kan niet alleen een desktop programma maken, maar ook CLI-programma, zonder een desktop scherm. CLI-programma’s zijn zoals (shell-) scripts, je start ze op de commandolijn, of je kan ze laten lopen uit een timer (cronjobs, ..).
Programma draaien (“run”)
Als je het programma draait vanuit de programmeeromgeving kan je het stap voor stap laten lopen tot gemarkeerde punten in je code, om te onderzoeken wat er juist gebeurt met variabelen enz.
Executable
Als je het programma uitvoerbaar wil maken, als afgewerkt programma dat zelfstandig(*) kan draaien, als “executable”, dan compileer je het tot een .gambas, en je kan automatisch een link (met icoon) laten maken op je desktop als je die optie aanvinkt. Daarop klikken start dan het programma, zonder de programmeeromgeving mee te starten. Dat is dus de versie die de “gebruikers” zullen krijgen. Ze hoeven niet het hele project met de broncode en de hele programmeeromgeving te hebben.
Runtime
Het minimum wat nodig is op een computer om de .gambas programma’s uit te voeren is de gambas “runtime”. Die moet je op de doelcomputer dus wel installeren: sudo apt install gambas3-runtime.
sudo apt install gambas3-runtime
Processen
Gambas programma’s zijn als proces herkenbaar aan hun namen gb..; bv Gambas3 gestart, en daarin een project open en laten lopen; In Taakbeheer zie je:
… gbx3 … gbr3 …
Een project gecompileerd en gestart bv met link op de desktop;
In Taakbeheer zie je:
Vergelijking tussen de progammeertaal en IDE gambas / freepascal-lazarus
IDE
Gambas
Lazarus
programmeertaal
Gambas
Free Pascal (FPC)
Huidig
Versie: 3.2
Versies 4.6 + FPC 3.2.
Operating system
Linux (div. distr.)
div platformen
Programmeren voor
– commandline (CLI) – Desktop (div. desktops)
– CLI – Desktop
Syntax
basic-achtig + OO
pascal + OO
Ontstaan
en
evolutie
in 1995, eerste versie uit in 1999 Versie 1.0 uit in 2005 Versie 2.0 uit in 2008 Versie 3.0 uit in 2011 veel 3.x versies, bv: Versie 3.20.0 uit in 2025
1999 uit Megido (1998), componenten 2001 eerste versie uit 2003 Versie 1.0 uit in 2012 Versie 2.0 uit in 2019 Versie 3.0 uit in 2023 Versie 4.0 uit in 2025
Na deze zypper dup opnieuw gambas3 geïnstalleerd met 1 click install van software.opensuse.org; met name de
Stable 3.22.0+20260714+1
De IDE start nu perfect, starter bevat Gambas on development/ontwikkeling.
Voorheen: probleem Gambas3 na Tumbleweed update 20260609
Na een update van OpenSUSE Tumbleweed (zypper dup) naar 20260515 is Gambas3 verdwenen, en wel zo dat ook de runtime er niet meer is, waardoor voorheen gemaakte Gambas applicaties niet gestart kunnen worden!
Ik probeer de installatie voor Tumbleweed* van software.opensuse.org, daar zijn nu naast de oude Education (Experimental) 3.14.3 versie nu ook een aantal recente Gambas versies bijgekomen bij “Community”:
Ik kies de laaste, stable. Ik krijg hierbij de vraag om gambas-dev-tools (blijkbaar toch iets overgebleven van vorige versie) om te zetten van bron munix naar home:gambas, wat ik dan ook doe.
Nadien werken de links op de desktop naar uitvoerbaare Gambas apps weer (runtime) en heb ik Gambas 3.21.6 (weet niet meer welke versie het voordien was) inclusief IDE geïnstalleerd staan, zonder de voorbeelden.
* Ps: de laatset die ik er terugvind voor Leap onder “Unsupported distributions” is: openSUSE:Leap:15.2, naast de SUSE:SLE-15:GA versies…allemaal “The following distributions are not officially supported. Use these packages at your own risk.”