Zum Inhalt springen

Gambas: Unterschiede zu VB

Aus Wikibooks

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

[Bearbeiten]

Siehe 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:

[Bearbeiten]
Art 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

[Bearbeiten]

Es 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

[Bearbeiten]

In 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 ;)

Siehe Gambas:_Form#Globale_Variablen_in_Gambas

IsNumber

[Bearbeiten]

Frage 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

[Bearbeiten]

Unter 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