Versie van Gambas vanuit programma opvragen

De versie van je eigen programma kan je in een tekstvariabele steken met:

sMijnVersie = Application.version

Maar als je daarnaast de versie van Gambas zelf nodig hebt?
Binnen Gambas is er geen commando om dat op te vragen.

In de IDE is die natuurlijk zichtbaar in het menu: ? , About Gambas (bv: 2.21).

Maar als je de gambas versie wil weergeven vanuit je draaiende gambas programma?

Meestal zal je dan de runtime bedoelen; die heet gbx (van gambas execute). In gambas 2 is dat gbx2, in gambas 3 vermoedelijk gbx3.

In je besturingssysteem kan je meestal de versie van een programma opvragen met
programmanaam --version
Wat ook geldt voor Gambas:

gbx2 –version
2.21.0

gba2 –version
2.21.0

gbc2 –version
2.21.0

gbi2 –version
2.21.0

gbr2 –version
ERROR: #35: Cannot open file ‘–version’: No such file or directory

Zie ook: archiver, compiler, informer.

Linux command prompt is bruikbaar vanuit Gambas:

EXEC ["gbx2", "--version"] TO sRuntimeVersie

Fout bij starten: FMain.?.0 – starten vanuit MMain

Een applicatie die op zich wel werkt, start “soms” niet op, maar geeft volgende foutmelding:

Error at program start

Fout bij start FMain

This application has raised an unexpected
error and must abort.

[13] Null object.
FMain.?.0

Na enige tijd wordt duidelijk dat ik ze wel kan draaien vanuit de IDE, waar ik dus het project open en “run” kies.
Op een ander toestel waar de applicatie gecompileerd is en gestart wordt van een icoon op de desktop, treedt de bewuste fout steeds op. Het is nochtans identiek dezelfde source, met misschien een miniem verschil in versies Linux/Kde/Gambas IDE.

Als ik het fenomeen terugzie bij een andere applicatie lijkt er een verband te zijn: programma’s die ik start vanuit de gewone, standaard voorezien FMain werken wel na compilatie. De applicatie die ik laat opstarten vanuit een module “MMain” geeft de foutmelding – niet vanuit de IDE dus, maar wel als gecompileerde versie die gestart wordt met een klik op het icoon naar de “programmanaam.gambas” file.

Gambas FMain MMain

Gambas FMain MMain


In MMain worden een aantal initialisaties gedaan, alsook de taal-check. Deze laatste zorgt ervoor dat vanaf het eerste “scherm” (of de eerste Form) de gelezen voorkeur-taalinstelling aktief is. MMain eindigt met de oproep van FMain, van waaruit dan verder gewerkt wordt.

De oorzaak blijkt een bug te zijn: in de MMain code wordt FMain fout aangeroepen:
FMain.Show in plaats van FMain.Show(). De IDE lijkt daar niet over te struikelen, maar -eens gecompileerd- de runtime dus wel.

upd 22/03/2012: Ik ben niet helemaal zeker van deze analyse, ik meen toch nog een ander voorbeeld te zijn tegengekomen waar de Show() correct was. Misschien is het een “combinatie van problemen” ?

Update:
Een interessant verschil blijkt te zitten in het behouden van de debug informatie bij het compileren. Als dat “aan” staat crasht de applicatie niet als je ze start vanop de link op de desktop!
“Make executable”, “options”, “Keep debugging information in executable”.
(Oorzaak van de fout: zie “Don’t TRY to DEBUG“)