Gambas: Unterschiede zu VB
zurück zu Gambas
Gambas ist näher verwandt mit VB2005 (Vb.net) als zu VB3,4,5,6, da es echt objektorientiert ist. Die VB Varianten 3-6 werden von Microsoft nicht mehr unterstützt und werden über kurz oder lang auslaufen. So gibt es dann mit Gambas unter Linux eine echte objektorientierte Open Source Basic Programmierumgebung, wie es unter Windows die objektorientierte Programmierumgebung VB.Net gibt.
Unterschiede zwischen Visual Basic und Gambas
BearbeitenSiehe dazu folgende Seite: http://www.gambasdoc.org/help/doc/diffvb?de
Die Programmierung von Funktionen in Gambas unterscheidet sich etwas von der Programmierung in VB. In Gambas kann man den Funktionsnamen in der Funktion nicht aufrufen, in VB ist das möglich.
Der Befehl Select Case of in Gambas unterscheidet sich etwas von der Nutzung in VB.
Die Timerfunktion gibt die Zeit in Sekunden aus, die seit Programmbeginn verstrichen sind. In Visual Basic ist das anders. Hier wird mit demselben Programm die Zeit ausgegeben, die seit 0 Uhr verstrichen ist.
In VB wird der Programmcode des Formobjektes und der Formdefinition in ein und derselben Datei abgelegt. Gambas trennt beides: Es gibt eine .form und eine .class Datei.
Übersicht Dateiendungen im Vergleich:
BearbeitenArt der Datei: VB Gambas Projekt Definition .vbp .project Module .bas .module Dateiendung Klasse .cls .class Form Definitions Datei .frm .form Binärdateien .frx beliebig
VB Form Import
BearbeitenEs gibt ein ImportVBProject von Rob Kudla, welches die VB Forms in Gambas Klassen umwandelt. Die automatische Umwandlung von VB Code in Gambas Code ist schwieriger. Dazu ist einige Handarbeit notwendig.
Globale Variablen in Gambas
BearbeitenIn VB war es möglich zb aus der Form2 heraus eine Textbox in Form1 direkt anzusprechen. Der Befehl dazu lautet: Form1!Textbox1.Text = "zb". Dies funktioniert in Gambas nicht. In Gambas gibt es keine projektübergreifenden globalen Variablen. Man kann sich behelfen, wenn man eine Klasse erzeugt, die man Global nennt. Die globalen Variablen deklariert man als statische public Variablen in dieser Klasse. Dann kann man auf sie mit Global.variablename im ganzen Projekt zugreifen.
Minsini: It's still poor programming practice but at least they'll be identified as global variables whenever you use them ;)
IsNumber
BearbeitenFrage zu Isnumber
TextArea1.Text = "349" PRINT IsNumber(TextArea1.Text)
ergibt FALSE. Warum ?
IsNumber() überprüft nur den Typ eines Wertes beginnend von boolean bis float. Es verhält sich anders als IsNumber() in VB.
Wenn man wissen will ob ein Textstring eine Zahl ist, dann muß man Val()/CInt()/CFloat() nutzen und überprüfen ob man eine Fehlermeldung bekommt.
Unload Befehl unter Gambas nicht verfügbar
BearbeitenUnter VB gibt es die Methode Unload. Diese ist unter Gambas nicht verfügbar. Als Alternative kann man die Methode Hide oder Delete verwenden. Bei einer Form gibt es noch die Close Methode.
Beispiel: Sie brauchen eine Form und einen Commandbutton für dieses Beispiel.
PUBLIC SUB Button1_Click() Button1.delete END
Oder
PUBLIC SUB Button1_Click() ME.delete 'Form1.close END