Berechnen von beliebigen mathematischen Formeln
Geschrieben von: Christian Koller 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:
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ßbemerkungMit 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 CodesKlicken Sie hier, um den Download zu starten. Verwandte ArtikelWenn 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.
©2000-2006 AspHeute.com |