VB -27: Option Explicit

Visitenkarten verlangen...

Wie in der letzten Lektion erwähnt, gibt es noch eine andere Möglichkeit, Variablentypen bekannt zu geben. Wir haben die Deklaration "Dim" schon benutzt, um bestimmte Variablen modulweit bekannt zu machen, das ist jedoch nicht der einzige Sinn dieses Keywords.

Üblicherweise wird "Dim" zur Deklaration von Variablentypen benutzt. Es hängt dann davon ab, wo man das tut, ob die Variable modulweit oder nur innerhalb einer Prozedur deklariert ist. Steht Dim am Anfang eines Moduls (außerhalb einer Prozedur), ist die Variable modulweit deklariert, steht es innerhalb einer Prozedur (überlicherweise am Anfang), ist die Variable nur in der Prozedur deklariert, steht Dim gar in einem .bas-Modul (allgemeiner Teil), gilt die Deklaration für das gesamte Projekt.

Wir können Dim als eine vornehmere Art des "Namensschlidchens" betrachten, die Visitienkarte. Jeder, der reinkommt, gibt seine Visitenkarte ab und braucht dafür kein Namensschildchen mit sich rumzutragen. Die verschiedenen Stufen können wir mit einem Gebäude vergleichen:

Wenn wir - wie bisher - nur Dim mit dem Variablennamen benutzen, gleicht das einer Visitenkarte, auf der nur der Name steht. Wir wollen jedoch auch den Typ bekanntgeben, damit die (Speicher-)Verwaltung auch gleich weiß, wieviel Platz reserviert werden muß. Das macht man, indem man an die Variable jeweils den Typ mit einem "As" (=als) anhängt. In unserem Beispiel sieht das dann so aus:

     Dim x As Integer                'aktuelle Zufallszahl modulweit bekannt machen
     Dim aktiveUebung As String      'aktuelle Übungsart modulweit bekannt machen
     Dim MaxErgebnisWert As Integer  'aktuelles Max-Ergebnis modulweit bekanntmachen
     Dim MinErgebnisWert As Integer  'aktuelles Min-Ergebnis modulweit bekanntmachen
 

Um für alle Besucher "Benimmregeln" vorzuschreiben, können wir das erzwingen, indem wir mit dem Befehl "Option Explicit" für jedes Modul vorschreiben, daß hier Visitenkartenpflicht herrscht. Jede Variable, die das betreffende Stockwerk betritt, muß sich dann daran halten, sonst wird sie nicht "zugelassen".

Ihr könnt es einfach ausprobieren, wenn Ihr eine Variable nutzt, die mit Dim nicht deklariert wurde, meckert unser Programm. Die Sache hat noch einen nützlichen Nebeneffekt: Machen wir einen simplen Tippfehler im Programm, beispielsweise

        Case 0
            MaxErgebinsWert = 10
            MinErgebnisWert = 2
            

wird das Programm diese Variable sofort als unbekannt abweisen und wir werden auf solche Tippfehler aufmerksam gemacht! Vor allem bei größeren Programmen bedeutet das ständige Deklarieren zwar Zusatzarbeit, aber erspart auch so manche zeitraubende Fehlersuche.

Wir bauen unser Programm also etwas um und führen den "Visitenkartenzwang" ein:

Deklaration Hauptform:

     Option Explicit

     Dim x As Integer                'aktuelle Zufallszahl modulweit bekannt machen
     Dim aktiveUebung As String      'aktuelle Übungsart modulweit bekannt machen
     Dim MaxErgebnisWert As Integer  'aktuelles Max-Ergebnis modulweit bekanntmachen
     Dim MinErgebnisWert As Integer  'aktuelles Min-Ergebnis modulweit bekanntmachen
     

Formload:

     Private Sub Form_Load()
       Dim i As Integer
       

Prozedur SymbAddition:

     Private Sub SymbAddition()
       Dim summand1 As Integer, summand2 As Integer
       Dim i As Integer
       

Hier hab ich zwei verschiedene Varianten benutzt. Man kann mehrere Variablen auf einmal vorstellen (gemeinsame Visitenkarte ) und trennt sie dann nur durch Kommata (erste Dim-Zeile) oder über mehrere Zeilen. Beides ist nebeneinander möglich und es bietet sich an, Variablen, die einen logischen Zusammenhang haben, auch gemeinsam vorzustellen.

Prozedur Zaehlen:

     Private Sub Zaehlen()
       Dim i As Integer
     

Prozedur Unsichtbar:

     Private Sub Unsichtbar()
       Dim i As Integer
           For i = 1 To 9           'alle roten Kugeln unsichtbar machen
           

Prozedur Addition:

     Private Sub Addition()
       Dim summand1 As Integer, summand2 As Integer
       Dim i As Integer
       

Auch in unserem Modul "Allgemein" werden einige Variablen benutzt:

     Option Explicit

     Sub Verzoegerung(ByVal Dauer As Long)
     Dim Start As Long, Zeit As Long
     

Hier habe ich nicht nur die in der Prozedur benutzte Variablen deklariert, sondern ich habe auch "Dauer" einen festen Typ zugewiesen. Dies hilft Typ-Unverträglichkeiten zu vermeiden.

Anmerkung: Dadurch, daß ich Dauer hier als "lange Integer"-Variable (Long) deklariert habe, können nur noch volle Sekunden übergeben werden.

Und schließlich noch die Deklaration in unserer Zufallszahlenfunktion:

     Function Zufallszahl(ByVal min As Integer, ByVal max As Integer) As Integer
     Dim z As Single
     

Durch Anhängen einer Typdeklaration an die Funktion (erste Zeile ganz rechts nach der Klammer) ist automatisch die Funktion selber typdeklariert, es werden stets ganze Zahlen als Zufallszahl erzeugt. Wollten wir auch andere Zahlen, müßten wird dies hier berücksichtigen. Im Gegenzug können wir auf die Umwandlungsfunktion "Int()" verzichten:

        Zufallszahl = min + (max - min + 1) * z
        

Das war soweit schon alles, in unserem Modul SplashScreen werden keine Variablen benutzt.

Beispielprojekt laden

zurück Index weiter


© Copyright 1998-2000 J.Behling EMail schreiben ABC-Ware's Homepage
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.