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

Berechnen von beliebigen mathematischen Formeln

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

Vielleicht ist Ihnen das Problem bekannt: Sie wollen eine Berechnung in einer ASP Seite durchführen, aber die mathematische Formel für diese Operation steht nicht von vorne herein fest. Wie kann man diese Problemstellung lösen, ohne einen Mathematikparser zu kaufen (von selbst schreiben möchte ich erst gar nicht reden)?

Möglicherweise haben Sie die Formel aus der Datenbank oder von einer Benutzereingabe in einer Variablen gespeichert. Doch wie bringen Sie VBScript dazu, daß es die Formel als Rechenanweisung akzeptiert und durchführt?

Betrachten wir ein einfaches Beispiel, um den Sachverhalt "live" nachzuvollziehen: Sie wollen ein Benutzerformular auf Basis ASP erstellen, in das man einen mathematischen Ausdruck (und nicht nur einen Wert) für X eingeben kann.

Vielleicht wollen Sie weiters, daß man für Y einen mathematischen Ausdruck eingeben kann, der sogar X als Variable beinhaltet. Die ASP Seite soll dann in der Lage sein, beide Ausdrücke (für X und Y) zu errechnen und auszugeben.

Wenn Sie nun meinen, Sie müssten einen Parser schreiben, der die Ausdrücke auswertet und die zugehörigen mathematischen Operationen durchführt, so werden Sie angenehm überrascht sein, daß VBscript mit der Execute Funktion das Ausführen eines beliebigen Ausdrucks, und damit auch das Berechnen eines mathematischen Ausdrucks erlaubt, solange der Ausdruck der VBScript Berechnungssyntax folgt.

Die Execute Funktion habe ich schon kurz im Artikel Dynamische Includes in ASP vorgestellt. Die einzige Voraussetzung, die ein Windows NT/2000 Webserver erfüllen muß, um die VBScript Funktion Execute benutzen zu können ist, daß mindestens VBScript Version 5.0 auf dem Server installiert ist.

Das nun nachfolgende Beispiel erlaubt es dem Benutzer einen beliebigen (der VBScript Syntax) entsprechenden mathematischen Ausdruck für X und Y einzugeben, und diese in der ASP-Seite berechnen zu lassen.

Gültige mathematische Ausdrücke in VBScript sind zum Beispiel:
Ausdruck Ergebnis
2000 + 1 2001
17 / 4 + (25 * 3) 79.25
sqr(2) 1.4142135623731
sin(90 / 360 * 3.1415926) 0.707106771713121
2 ^ 8 256
abs(-36) 36

Um einen mathemathischen Ausdruck zu berechnen, gibt der Benutzer den Ausdruck in ein HTML Formular ein, und schickt dieses zum Server. Am Server, genauer in der ASP-Seite, wird der Ausdruck aus der Request.Form (oder Request.QueryString) Collection gelesen und in der Variablen AusdruckX gespeichert.

Danach wird dieser Ausdruck berechnet und der Variablen X zugewiesen. Dies geschieht mit Hilfe der VBScript Funktion Execute wie folgt:

Execute("X = " & AusdruckX)

Wenn also die Variable AusdruckX den Ausdruck "(25 / 5) + 1" enthält, so wird nach dem Aufruf von Execute("X = " & AusdruckX) die Variable X den Wert 6 enthalten.

Der Vollständigkeit halber habe ich noch die Lösung zu unserem Anfangsproblem ausprogrammiert, wo der Benutzer beliebige Ausdrücke für X und Y eingeben können soll. Sie finden dieses Beispiel im Download zu diesem Artikel.

Geben Sie im downloadbaren Beispiel einmal die folgenden Ausdrücke ein:

X = 17 + 4
Y = X / 3

und Sie erhalten als Ergebnis

X = 21
Y = 7

Natürlich habe ich in das Script einige Sicherheitsmaßnahmen eingebaut, sodaß der Benutzer nicht einen (gültigen) VBScript Ausdruck eingibt, der zum Beispiel das FileSystemObject Objekt benutzt um Dateien auf dem Webserver zu löschen oder den Sourcecode von ASP Seiten (eventuell inklusive Paßwörtern) auszugeben. Sie halten mit diesem Beispiel also einen voll "on the fly" einsetzbaren Taschenrechner mit VBScript Funktionalität.

Schlußbemerkung

Mit VBScript 5.0 (oder höher) ist es keine Hexerei mehr, wenn man beliebige mathematische Ausdrücke berechnen will - oder andere Funktionen dynamisch ausführen möchte (siehe Verwandte Artikel).

Dies ist natürlich nur ein mögliches Einsatzgebiet der Execute Funktion. Experimentieren Sie ruhig ein wenig, aber bedenken Sie, daß in der Execute Funktion auch Ausdrücke ausgeführt werden können, die Dateien auf dem Server löschen, oder Datenbankinformationen zugänglich machen können!

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Dynamische Includes in ASP

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.