Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Klassen in VBScript

Geschrieben von: Patrick A. Lorenz
Kategorie: ASP Tricks

Seit Version 5.0 bietet VBScript die Möglichkeit, Klassen anzulegen und somit mit Eigenschaften und Methoden zu arbeiten. Jeder Entwickler einer höheren Sprache wie VB, Delphi, C, etc. wird jetzt vor Vorfreude nervös mit den Augen zucken, aber ob sich Klassen wirklich sinnvoll in VBScript einsetzen lassen, soll dieser Artikel klären.

Wie normale Funktionen werden auch Klassen im normalen Kontext einer VBScript Datei notiert und nicht in einer separaten Datei, wie etwa in VB. Es wurde hierzu die Schlüsselworter Class und End Class eingeführt, die die eigentliche Klasse einrahmen.

Class ClassName
...
End Class

Innerhalb der Klasse lassen sich nun mit Hilfe von

[Private|Public] [Default] Sub|Function() 
und
[Private|Public] [Default] Property Get|Let|Set()

Methoden und Eigenschaften implementieren. Der Syntax orientiert sich dabei am großen Visual Basic.

Die Beispiel-Klasse TextOut

Die im folgenden dargestellte Klasse soll einen beliebigen Text in der Eigenschaft Text aufnehmen und diesen bei Aufruf der Methode WriteLn ausgeben. Der Code für die Klasse TextOut sowie den Code zum Testen der Klasse kann man in einer ASP Datei zusammenfassen:

<% @LANGUAGE = "VBScript" %>
<%
Class TextOut

 'Deklarationen
 Dim m_Text

 'Öffentliche Eigenschaft Text
 Public Property Get Text
  Text = m_Text
 End Property

 Public Property Let Text(newText)
  m_Text = newText
 End Property

 'Öffentliche Methode WriteLn()
 Public Function WriteLn()
  Response.Write Text  ' für ASP
  ' WScript.Echo Text    ' für WSH
 End Function
 
End Class

Dim x
Set x = New TextOut
With x
 .Text = "Hallo Welt"
 .WriteLn()
End With
%>

Die Klasse TextOut verfügt über eine Eigenschaft Text, auf die lesend und schreibend zugegriffen werden kann. Der Inhalt der Eigenschaft wird in der Member Variable m_Text gespeichert. Zudem gibt es die Methode WriteLn mit dem der Inhalt der Eigenschaft ausgegeben werden kann - und zwar im Falle von ASP mit Response.Write.

Vor dem Aufruf muß die Klasse mit dem neuen Schlüsselwort New instanziert werden, CreateObject kann nicht verwendet werden. Danach kann das Objekt verwendet werden, indem man Eigenschaften und Methoden aufruft.

Die optionalen Schlüsselwörter

Interessant sind auch die optionalen Schlüsselwörter Private und Public, über die man wie im großen Bruder VB angeben kann, ob eine Eigenschaft oder Methode öffentlich oder privat verwendet werden soll. Bei einer öffentlichen Deklaration ist der Zugriff von außen möglich, bei einer privaten nur von innerhalb der Klasse.

Wird weder Public noch Private bei der Deklaration angegeben, so nimmt VBScript automatisch Public an. Neben Methoden lassen sich auch Variablen als Public definieren, und sind somit öffentlich zugreifbar. Dies ermöglicht den Wegfall des Property Get|Let|Set Konstruktes, was den Schreibaufwand unter Umständen enorm reduzieren kann.

Verkürzt sieht unser obiges Beispiel wie folgt aus:

<%
Class TextOut
 
 'Öffentliche Variable Text
 Public Text

 'Öffentliche Methode WriteLn()
 Public Default Function WriteLn()
  Response.Write Text  ' für ASP
  ' WScript.Echo Text    ' für WSH
 End Function
 
End Class

Set x = New TextOut
x.Text = "Hallo Welt"
x
%>

Im letzten Beispiel wurde das das Schlüsselwort Default verwendet. Hierüber läßt sich eine Methode oder Eigenschaft festlegen, die nicht angegeben werden muß um standard(default)mäßig aufgerufen zu werden. Bei Eigenschaften kann hier aber nur der Get Teil verwendet werden, da bedingt durch das Late Binding von VBScript der Wert ansonsten nicht der Standard-Eigenschaft sondern der instanzierten Klasse selbst zugewiesen werden würde und diese somit terminiert werden würde.

Praxis-Einsatz

Soweit die Theorie der Klassen in VBScript, aber wie sieht es nun aber in der Praxis aus? Als ich mich das erste Mal mit VBScript Klassen beschäftigt habe, schossen mir sofort Gedanken an Warenkörbe, Benutzer-Verwaltungen, etc. in den Kopf. Sofort habe ich eine erste Klasse geschrieben und diese in einer Include-Datei abgelegt. Nun habe ich zwei ASP Seiten erstellt, die beide die Klasse included haben. Die erste Seite hat die Klasse in einer Variablen mit Session Scope instanziert und einige Eigenschaften zugewiesen. Die zweite Seite versucht nun, auf die Eigenschaften der Klasse zuzugreifen. Ergebnis: Ein ASP Runtime Error. Microsoft äußert sich im Knowledgebase Artikel Q246596 dazu, bestätigt und nennt als Lösung: "Only use VBScript classes with page-level scope.". Schade, wäre es doch so schön gewesen.

Schlußbemerkung

Das Klassen-Konstrukt von VBScript bietet eine Reihe von interessanten Möglichkeiten, die sich gerade in Verbindung mit Includes sehr gut nutzen lassen. Als Anwendungsbeispiel fällt mir hier spontan ein allgemeiner Mail-Parser ein, der auf der einen Seite mit Variablen und deren Inhalt gefüllt wird und auf der anderen Seite ein angegebenes Textfile parst und das Ergebnis versendet. Dieser Parser soll Inhalt eines weiteren Artikels sein.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Allgemeine MailParser-Klasse mit ASPMail
CSVs aus MDBs leicht gemacht
Daten aus CSV-Dateien in MDBs importieren
Flash Detection ohne Komponente
Große Datenmengen in Formularfeldern erfolgreich auslesen
Klassenauflistungen mit dem Dictionary-Objekt
Kopieren verboten - Lizenzsicherung bei ASP Scripts
RemoteScripting - Einführung, Tips und Tricks
Strukturierter Aufbau in der ASP-Programmierung
Tracing in ASP

Links zu anderen Sites

Only use VBScript classes with page-level scope

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.