Wat is gambas?

Featured

  • Gambas is een laagdrempelige programmeeromgeving (IDE) op Linux om snel en gemakkelijk programma’s (en bijhorende schermen) te maken in de Gambas programmeertaal (Snel start ).
  • De Gambas programmeertaal is een object georiënteerde knipoog naar visual basic, maar voelt vooral erg native Linux aan; de IDE is volledig in Gambas zelf geschreven…. Continue reading →

Programmeer of gebruiksversie

Ik heb doorgaans problemen bij het tegelijk schrijven en gebruiken van software

  1. de gegevens (database): ik wil niet het risico lopen om gegevens te verliezen door programmeerwerk dat nog niet in orde is, dus moet mijn programmeren gebeuren met andere data dan mijn “gebruik”.
  2. de bestanden: als ik bestanden gebruik om te lezen of te manipuleren (verplaatsen naar ander directories bv), wil ik ook niet bij het programmeren door fouten daar bestanden verliezen of wanorde creëren in de structuur.
  3. Extreem uit elkaar lopende versies, wat gemakkelijk kan met git, levert mij bij eenzelfde gambas programma het probleem op dat het uitvoerbare programma dat gemaakt wordt dezelfde naam heeft, en dat bv de executable van de programmeerversie de “goede” versie die in gebruik is, zal overschrijven.

Gambas3 op Tumbleweed 202507..

Ik ben overgestapt op Tumbleweed en Gambas 3.20.4 na een mislukte installatie op openSUSE 15.6

Tumbleweed.. 14/6/2025 (0613)

Distributions

openSUSE Tumbleweed

Education Experimental 3.14.3

home:gambas:stable Community 3.20.4+20250520+1

Dit lukte en deze is in gebruik: 3.20.4.

Enkel kijken of

  • ik deze kan updaten zonder Gambas te verliezen
  • Ik dit kan herhalen op een nieuwe Tumbleweed installatie…

Tumbleweed 0702 lukt het in eerste instantie niet met de 3.20.4 uit de community repository. Ik doe eerst een zypper dup.

Er is nog de “master” versie 3.20.99…

Gambas verstaat Note, Todo en Old

Note en Todo worden herkend (upd: en Fixme*)

Ik heb een beetje toevallig ontdekt dat Gambas een mooi overzichtje geeft van bepaalde opmerkingen die ik in de broncode heb gemaakt. Ini het deel van het venster onderaan waar de foutmeldingen van het compileren komen, kan je ook kiezen om de “Notes” te zien. Selecteer het Notes icoon in het rijtje “Konsole”, “Waarschuwingen”, “Notes”, “Versiecontrole (Git)”.

In vier kolommen krijg je een ovezicht van opmerkingen (commentaren) die je in je broncode gemaakt hebt met een bepaald voorvoegsel, bv “Todo” of “Note”. NOTE’s worden in het zwart getoond, TODO’s in het groen, FIXME in het rood.

Type | Klasse | Lijn | Tekst

NOTE | Klassenaam1 | Lijnnummer | Tekst van de commentaar

TODO | Klassenaam2 | Lijnnummer | Tekst van de commentaar

FIXME | Klassenaam3 | Lijnnummer | Tekst van de commentaar

Als je op een lijn klikt ga je onmiddellijk naar die code in de editor. Zeker handig als je een onafgewerkt stuk code aangeduid had met Todo, en het nadien vergeten was. Andere commentaren die in mijn code staan verschijnen niet, zoals “reload list”, “ok” enz.

Bestandsnaam met .old wordt herkend

Even toevallig ontdekt: ik had een betere versie gemaakt van een Form en hernoemde via mijn bestandbeheer (dus niet in de Gambas IDE) de oorspronkelijke versie naar “… .old”; tot mijn verrassing werd dat .old bestand in de IDE zichtbaar met een vuilbakje ernaast.

Ik had beide bestanden van de Form FHtmlOut hernoemd naar FHtmlOut.Form.old en FHtml.Class.old, en dan geeft hij die beide bestanden weer maar met een rood vuilbakje ervoor.
Je kan dat hernoemen niet in de IDE doen, dan wordt de nieuwe naam geweigerd wegens de “.” in de naam (het zou handig zijn moest de IDE de nieuwe .old naam aanvaarden en zelf beide bestanden hernoemen, en bv ook ineens de code controleren of het nergens meer aangeroepen wordt)

Gambas3 op openSUSE 15.6?

Op/af: in OpenSUSE 15.6 zijn de ervaringen gemengd, bv verschil tussen upgrade en nieuwe installatie. Bij elke nieuwe installatie is het afwachten, bv omdat de munix repo waaruit het werkte, verdwenen is. Hieronder een overzicht, recentste bovenaan…


28/07/2026 geeft een nieuwe installatie een foutmelding:

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

Op de commandline gestart: gbr3 –help
Gambas interpreter version 3.22.0 785d493 (master)

Op de Gambas bugtracking wel vermeld:

Date: Thu, 17 Jul 2025 14:21:22 GMT 
This error occurred due to a change/update in the gcc compiler and has been fixed. You must update to a newer gambas version that has the fix. (you did not include what gambas version you are using in your details) To upgrade gambas to the latest stable version type the following in a terminal... sudo zypper addrepo https://download.opensuse.org/repositories/home:gambas:stable/openSUSE_Tumbleweed/home:gambas:stable.repo sudo zypper refresh sudo zypper install gambas3 Or run gambas without JIT. To disable JIT set the GB_NO_JIT environment variable to true. like this... $ env GB_NO_JIT = true gambas3

24/08/2026, … , 31/07/2026 update meldingen (van gambas3)..maar deze updates uitvoeren veranderen niets aan bovenstaand probleem.

Wat wel hielp was de tip in de mailinglist om zonder JIT te starten. Op de commandline:

env GB_NO_JIT=true gambas3

09/08/2025: Kort: Ondertussen werkt het perfect ok op Leap 15.6.

Op software.opensuse.org vind je gambas3 from home:gambas:3.21 project:

zypper addrepo https://downloadcontent.opensuse.org/repositories/home:gambas:3.21/openSUSE_Leap_15.6
$ zypper addrepo https://downloadcontent.opensuse.org/repositories/home:gambas:${VERSION}/openSUSE_Leap_15.6/home:gambas:${VERSION}.repo
$ zypper refresh
$ zypper install gambas3

Dit werkt goed; nadien staat gambas zichtbaar in Yast2 softwarebeheer, alles behalve gambas3-benchmark en gambas3-examples.


(Oorspronkelijk niet gelukt en toen overgestapt op Tumbleweed en Gambas 3.20.4)

In OpenSUSE 15.5 was Gambas3 niet aanwezig (op software.opensuse.org; wel ooit op een andere manier aan de praat gekregen). Maar na een update naar openSUSE 15.6 kunnen we daar weer wel op een “community” package 1-klikken om te installeren of om te bewaren als een installatiebestand: gambas3.ymp

home:munix9 Community 3.20.4

home:munix9:unstable Community 3.20.99+git.20250606….

Na aanvankelijke installatie daarvan is gambas er (in het menu bv) nog niet (misschien wel de runtime), en kan je verder gambas installeren uit het package management van Yast: gambas3. Die is daarna te vinden in het (klassiek) menu onder developement.

In de huidige (2025-08-08) installatie van OpenSUSE: Gambas 3.20.4-lp156.16.1 werkt het perfect, ondanks de problemen in een vroegere installatie op 15.6.


Oorspronkelijk: Helaas start Gambas3 met een fout:

 
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

Even checken vanop de commandline:

**  
** OOPS! INTERNAL ERROR. Program aborting, sorry! 🙁
** Unable to compile JIT source file
**  
** [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
**

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
**  
** [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
**

Dit was dus geen succes, en ik probeer met Tumbleweed.. 14/6/2025

Distributions

openSUSE Tumbleweed

Education Experimental 3.14.3

home:gambas:stable Community 3.20.4+20250520+1

Gambas3 start alvast, ik check verder of bestaande programma’s werken…

Scripting

In forum.gambas.one vind je een voorbeeld om snel te starten:

#!/usr/bin/env gbs3
 Public Sub Main()
    Dim strFiles as String

    Exec ["ls", "-l"] To strFiles
    Print strFiles
 End

Bewaar het als script, met een naam bv Gb3TestScript1.gbs en maak het uitvoerbaar (chmod +x of in je bestandsbeheerder).

Om het te starten ga je in die directorie staan en doet

./Gb3TestScript1.gbs

Dit scipt doet niet veel bijzonders, maar het is een aanknopingspunt; zo kan je de uitvoer bv

  • op een gedeelde locatie zetten (bv nextcloud) om beschikbaar te maken voor collega’s
  • in html opmaken en in een directory van de webserver bewaren om zichtbaar te maken enz.

Programmanaam en datum

Gegevens over het gambas programma zelf krijg je vanuit code met Application

Print Application.Name
Print Application.Version

* Name is niet noodzakelijk hetzelfde als Application.Title (die kan anders gekozen zijn – zie Project Eigenschappen, Titel; het is een vrije tekst. Dit in tegenstelling tot de naam die overeenkomt met de projectmap-naam).

Moeilijker is de datum van het programma zelf, want terwijl je werkt in de IDE is dat eigenlijk niet gedefinieerd. Pas als je een executable hebt gemaakt (Project, Maak uitvoeringsbestand) kan je weten wat de datum van het uitvoerbare programma is.

Gegevens van een bestand vraag je op de commandolijn op met stat, en dat is overgenomen in Gambas in het commando Stat

De naam van de executable kan je niet direct opvragen, maar wel samenstellen uit pad, naam en de uitgang .gambas

De datum van een bestand: Stat(“naamvaneenbestand”) kan je zo invullen:

Stat(Application.Path &/ Application.Name & ".gambas").LastModified

Maar! als je deze code draait vanuit de IDE (F5 uitvoeren) krijg je een foutmelding: “File or directory does not exist”

Dat kan je opvangen door er Try voor te zetten, toon eventueel de foutmelding ergens:

' (er is een TextLabel voor de titel gemaakt) 
txlbTitle.Text = Application.Name & " (datum ...)"
Try txlbTitle.Tooltip = Stat(Application.Path &/ Application.Name & ".gambas").LastModified
If Error Then
txlbTitle.Tooltip &= " tried path/name: " & Application.Path &/ Application.Name & ".gambas" & " err: " & Error.Text
Endif

MySQL/mariadb zonder ssl?

In openSUSE Tumbleweed werkt de databaseverbinding naar een lokale server niet vanuit een Gambas programma.

Op de commandline met mysql client wordt duidelijk dat een veilige verbinding verondersteld wordt (ssl), maar mijn interne server heeft dat niet. Je kan met een parameter --skip_ssl afdwingen om dat niet te doen, maar hoe doe je dat vanuit je Gambas programma? Ik dacht het ooit al eens opgelost te hebben maar ik weet niet meer hoe…

De help van de client zegt: Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf

In een post las ik:

“If you don’t want to type --skip-ssl on the command line every time, you can instead add this to /etc/mysql/mariadb.conf.d/50-client.cnf or ${HOME}/.my.cnf
[client]
skip-ssl = true

Maar dat lijkt niet gebruikt of gelezen te worden door het gambas programma…

In openSUSE Leap 15.6 werkt het (nog) wel en is Gambas3 (ook/weer) installeerbaar (te verifiëren, niet altijd blijkbaar).

Upd: zie MariaDb verbinding zonder SSL http://gambas.copyleft.be/blog/archives/3726

Bladwijzer in de broncode (bookmark)

Als je een probleem in de broncode aan het oplossen bent, moet je kunnen heen en weer springen tussen verschillende stukken code. Daarvoor kan je een bladwijzer zetten om je vorige positie te onthouden: sta op een lijn en druk Ctrl-B. Er verschijnt een zacht (lichtblauw bij mij) pijltje voor de lijn.

Ga naar een willekeurige andere lijn in je text (als je weet dat je rond 500 bezig was, druk Ctrl-G 500.

Ga nu snel terug naar je bookmark met Alt-PageUp of Alt-PageDown.

Dat is handiger dan er breekpunten voor te gebruiken, die kunnen later hinderen.

Gambas en GPIO op Raspberry Pi

Een poging om commandline gpio te gebruiken vanuit/om te leiden naar een Gambas programma.

Library "/user/local/libpigpio"

Public Sub testGPIO()

Dim sAnswer As String
Dim sCommand As String

sCommand = "gpio -h"

TRY SHELL sCommand TO sAnswer

TextAreaOut.Text = sAnswer

End

Ik ga er van uit dat je een Form hebt, FMain, waar je deze code in plakt.

Op de Form heb je een TextAreaOut gemaakt.

Je kan op het scherm dan een button zetten, die deze code aanroept.

Public Sub Button1_Click()

testGPIO()

End

Hetzelfde kan je doen met gpio -g readall in sCommand; dat leest de pinnen uit naar een tabel met informatie en pin-nummers (incl BCM nummers). Enz…