3 Programmieren Mit Vbscript
Total Page:16
File Type:pdf, Size:1020Kb
3 Programmieren mit VBScript Windows Scripting lernen ISBN 3-8273-2019-4 In diesem Kapitel werden die Grundlagen für das Programmieren mit Lernziel VBScript vermittelt. Dazu gehören die grundlegenden Regeln, die beim Erstellen von VBScript-Code notwendig sind, sowie das Arbeiten mit Konstanten und Variablen. Anschließend wird die Verwendung von Be- dingungen und Schleifen besprochen, mit denen der Ablauf des Skripts gesteuert werden kann. Weiterhin geht es um eingebaute Funktionen und selbst definierte Unterroutinen. Am Ende wird das Rüstzeug für den Umgang mit Laufzeitfehlern vermittelt. Ein großes Gebiet der VBScript-Programmierung ist die Arbeit mit Objekten. Dieses wichtige Thema ist in Kapitel 4 ausgelagert. 3.1 Die Visual Basic-Sprachfamilie Die Sprache BASIC (Beginners All Purpose Symbolic Instruction Code) hat bei Microsoft eine lange Geschichte, zunächst als QBasic, später als Visual Basic. Innerhalb der Microsoft Windows-Welt ist Visual Basic die beliebteste Programmiersprache. Visual Basic gibt es in vier Dialekten: • Das eigentliche Visual Basic zur Entwicklung eigenständiger Anwen- dungen, • Embedded Visual Basic zur Entwicklung für Windows CE (dem Handheld-Betriebssystem von Microsoft), • Visual Basic for Applications (VBA) als Makrosprache in Microsoft Office und anderen Endbenutzer-Anwendungen • und Visual Basic Script (VBS) für den Windows Script Host (WSH) und andere Skript-Umgebungen in Windows-Anwendungen. Die Visual Basic-Sprachfamilie 41 VBA und VBScript haben ähnliche Anwendungsgebiete. Der Hauptun- terschied liegt darin, dass VBScript kostenlos ist, während Microsoft für die Verbreitung von Anwendungen mit integriertem VBA kräftig Lizenzgebühren kassiert. VBA ist außerdem nicht nur eine Sprache, sondern umfasst auch eine komfortable Entwicklungsumgebung, wo- rin der Hauptgrund für den hohen Preis zu suchen ist. Visual Basic Visual Basic.NET (Visual Basic 7.0) In VB.NET entfallene Visual Basic 6.0 / VBA 6.0 Befehle Visual Basic 5.0 VBA 5.0 Zusätzliche Befehle, VBScript 5.1 / 5.5 die es nur in VBScript gibt © [email protected] Abbildung 3.1: Sprachumfang der VB-Dialekte Wie in Kapitel 1 bereits erwähnt ist Visual Basic Script eine Interpreter- Sprache, bei der die Befehle erst während des Ablaufs zeichenweise in Maschinensprache-Befehle für den Mikroprozessor umgesetzt werden. 3.2 Allgemeines zum Arbeiten mit VBScript Innerhalb dieses Abschnittes geht es um grundlegende Regeln und den Aufbau von VBScript-Dateien. Im Gegensatz zu anderen Sprachen gibt es nur wenige Konventionen, die eingehalten werden müssen. VBScript-Syntax Als Erstes einige einfache Regeln für die formale Struktur (Syntax) von VBScript: • Grundsätzlich enthält jede Zeile genau einen Befehl. • Es ist möglich, mehrere Befehle getrennt durch einen Doppelpunkt in eine Zeile zu schreiben. Auf diese Möglichkeit sollten Sie aber aus Gründen der Übersichtlichkeit verzichten. 42 Programmieren mit VBScript • Wenn Befehle sich über mehr als eine Zeile erstrecken sollen, müssen alle Zeilen mit nicht abgeschlossenen Befehlen mit einem Unter- strich „_“ enden. • Leerzeilen, Leerzeichen und Tabulatoren sind in beliebiger Häufung erlaubt, um den Skriptcode übersichtlicher zu machen. • VBScript ist nicht case-sensitive: Die Groß- und Kleinschreibung der Schlüsselwörter ist also ebenso ohne Bedeutung wie die Schreibweise Ihrer selbst gewählten Bezeichner für Variablen, Unterroutinen, etc. • Sofern es nicht durch Bedingungen, Schleifen oder Unterroutinen (die Sie in diesem Kapitel später kennen lernen werden) anders be- stimmt wurde, wird ein Skript sequenziell ausgeführt. Die Ausfüh- rung beginnt in der ersten Zeile. Folglich ist die Reihenfolge der Be- fehle für die korrekte Ausführung des Skripts grundsätzlich wichtig. In vielen Fällen gibt es jedoch mehrere verschiedene richtige Reihen- folgen. Demnach ist die Reihenfolge nicht beliebig. Bei der Erstellung von VBScript-Code gibt es also prinzipiell die Mög- Ein Befehl pro Zeile lichkeit, mehrere Anweisungen (Befehle) in eine Zeile zu schreiben. Diese Befehle müssen dazu allerdings mit einem Doppelpunkt (:) von- einander getrennt werden. ErsterBefehl(): ZweiterBefehl() : DritterBefehl() Allerdings entspricht dies nicht ganz der ordentlichen Programmie- rung. Damit der erstellte Code einfach zu lesen ist, sollte man pro Zeile immer nur einen Befehl verwenden: ErsterBefehl() ZweiterBefehl() DritterBefehl() Im Gegensatz zu anderen Sprachen, wie z.B. C++ oder Java, hält es VB- Groß- und Klein- Script mit der Groß- und Kleinschreibung nicht so genau. Es wird nicht schreibung zwischen diesen beiden Schreibweisen unterschieden, sodass die fol- genden Codezeilen absolut identisch interpretiert werden: IF wert1>wert2 THEN wert2 = wert1 If wert1>wert2 Then wert2 = wert1 if wert1>wert2 then wert2 = wert1 Zwar ist es in VBScript möglich, sehr lange Codezeilen zu schreiben, Zeilenumbrüche allerdings sind diese für die Lesbarkeit nicht gerade von Vorteil. Sollte einmal der Fall auftreten, dass eine sehr lange Codezeile entsteht, so kann man zwischen zwei Zeichen, die nicht zu einem Befehl oder Wert gehören, durch einen Unterstrich (_)_ trennen und in der nächsten Zeile fortsetzen. Das folgende Beispiel verdeutlicht diese Möglichkeit. Allgemeines zum Arbeiten mit VBScript 43 If (Wert1>Wert2) And (Wert2>Wert3) Or (Wert1>Wert3) Then … End If Dieser Code kann durch Umbrechen von Zeilen mit dem Unterstrich wie folgt dargestellt werden: If (Wert1>Wert2) And _ (Wert2>Wert3) Or _ (Wert1>Wert3) Then … End If 3.3 Kommentare Grundsätzlich sollte man bei der Programmierung dem eigentlichen Programmcode zusätzliche Kommentare hinzufügen, um das Pro- gramm für sich selbst und andere verständlich zu machen. Ein gutes Skript zeichnet sich dadurch aus, dass es gut lesbar ist, d.h. dass der Code ist entsprechend kommentiert wurde. Zwar kann man anhand des Programmcodes oft schon sehen, was innerhalb eines Skripts geschieht, allerdings wird diese Lesbarkeit durch Kommentare wesentlich verbes- sert. Um einen Kommentar innerhalb eines Codes zu definieren, muss dieser mit einem Hochkomma (') oder mit dem Schlüsselwort REM ein- geleitet werden. ' Kommentare.vbs ' Kommentieren von Quellcode ' Autor: [email protected] ' verwendet: keine weiteren Komponenten ' =============================== ' Dies ist ein Kommentar REM Dies ist auch ein Kommentar Listing 3.1: Kommentare.vbs Dieses Beispiel enthält, wie jedes Beispiellisting in diesem Buch, einige Kommentarzeilen, die das Skript beschreiben (Name der Datei, Be- schreibung, Autor, etc.), sowie zwei beispielhafte Kommentare mittels Hochkomma (') und REM-Befehl. 44 Programmieren mit VBScript 3.4 Literale Bei Literalen handelt es sich um statische Werte, die direkt innerhalb des Codes hinterlegt werden. Literale werden zum Beispiel für folgende Aufgaben verwendet: • Texte, die das Skript ausgeben soll • Namen von Dateien, die das Skript auslesen soll • Schwellwerte, die für Gültigkeitsprüfungen verwendet werden sollen Es gibt verschiedene Arten von Werten: Ganzzahlige numerische Werte werden einfach durch die Aneinander- Zahlen reihung von Ziffern dargestellt. Bei Fließkommazahlen (nicht-ganzzah- ligen numerischen Werten) wird das Dezimaltrennzeichen nicht durch ein Komma dargestellt, sondern – amerikanisch – durch einen Punkt. Neben dem Dezimalsystem unterstützt VBScript noch zwei andere Zah- Andere Zahlen- lensysteme: Hexadezimalzahlen werden durch ein vorangestelltes "&h", systeme Oktalzahlen durch ein "&o" kenntlich gemacht. Beim Scripting werden manchmal Zahlen als Hexadezimalzahlen oder Oktalzahlen dargestellt, weil die Darstellung einer bestimmten Zahl in diesen Zahlensystemen einfacher ist als im Dezimalsystem. Zeichenketten werden in Anführungszeichen (") dargestellt. Jeweils am Strings Anfang und am Ende des Textes begrenzt dieses Zeichen die Zeichenket- ten. Möchte man innerhalb einer Zeichenkette selbst ein Anführungs- zeichen darstellen, so muss dieses mittels doppelter Anführungszeichen geschehen, z.B. „Hier ist ein Anführungszeichen “„Hallo“„ ! “. Datums- und Uhrzeit-Werte werden innerhalb von zwei Nummerzei- Datum und chen (#) dargestellt. Darüber hinaus erfolgt die Darstellung im amerika- Uhrzeit nischen Format, d.h. mm/dd/yyyy. Für das Datum „11. April 1975“ schreibt man also: #04/11/1975#. Auch die Uhrzeit muss in amerikanischer Schreibweise angegeben werden, z.B. #04/11/1975 11:15:00AM#) Die Wahrheitswerte (boolsche Werte) „Wahr“ und „Falsch“ werden mit- True und False tels der beiden Wörter True und False dargestellt. Die Darstellung von Währungswerten ist abhängig von den Währungs- Währungs- einstellungen innerhalb der Systemsteuerung. Für eine auf Euro einge- angaben stellte Systemsteuerung wäre folgender Wert möglich: „3.231,59 €“. Da- bei muss der Wert innerhalb von Anführungszeichen angegeben werden. Literale 45 Empty und Null Der Sonderzustand „noch kein Wert zugewiesen“ wird durch das Wort Empty angezeigt; der Sonderzustand „Variable hat keinen mehr“ wird durch das Wort Null dargestellt. Ausgabe von Die einfachste Möglichkeit der Verwendung von Literalen ist der in Ka- Werten pitel 1 vorgestellte WScript.Echo-Befehl. Das folgende Beispiel zeigt, wie WScript.Echo die beschriebenen Formen von Literalen ausgibt. Die Aus- gabe zeigt, dass Hexadezimalzahlen und Oktalzahlen immer als Dezi- malzahlen ausgegeben werden. ' Literale.vbs ' Ausgabe von Literalen ' Autor: [email protected] ' verwendet: keine weiteren Komponenten ' ================================================================== ' Ausgabe von Zahlen WScript.Echo(123123) WScript.Echo(323.923)