Framework:Formeln:WarumTyped

Aus CoPlanner 11
Zur Navigation springenZur Suche springen

Warum sind Strings in typed anders gebaut?

Es gibt zwei Arten von Expressions, die in CoPlanner verwendet werden können.

Die ursprüngliche Variante sind Expressions, die nicht typed sind; im Zuge der Entwicklung neuer Formeltypen (Menge) wurde die Variante typed Expressions eingeführt.

Was war die Motivation dafür?

Neben Performance-Vorteilen, die typed gegenüber der ursprünglichen Variante hat gab es Fälle, in denen man in Formeln Werte zuweisen wollte, dies in den Formeln aber nicht möglich oder nur sehr kompliziert zu bewerkstelligen war. Der Grund dafür ist, dass es in der ursprünglichen Variante der Expressions keine Unterscheidung gibt, zwischen dem„was der Ausdruck ist, der berechnet werden soll" und dem "was der Inhalt der Daten ist, mit denen gerechnet wird“


Dies kann anhand von zwei einfachen Beispielen illustriert werden:

Beispiel 1

Man erstellt eine Tabelle mit zwei Textspalten t1 und t2, dazu eine Same-Formel, die das Flag für typed nicht gesetzt hat und die ganz einfach den Wert von t1 auf t2 schreibt.

Wenn man jetzt in der Tabelle eine Zeile erzeugt und in t1 den String „1+2“ eingibt, dann wird auf t2 mit der Same-Formel der String „1+2“ geschrieben.


Jetzt ändert man den String in t1 auf „(1+2)“ - und erhält in t2 den String „3“ – in diesem Fall wird der Ausdruck von nicht-typed Expressions so interpretiert, dass hier eine Berechnung durchzuführen ist.


Mit typed Expressions wird in beiden Fällen der String einfach weitergeschrieben.

Beispiel 2:

Man hat eine Tabelle mit einem Wertfeld w und einem Textfeld t. Jetzt möchte man in das Textfeld folgendes schreiben „[MeinWert] hat den Wert [w]“, wobei statt [w] der Wert des Wertfeldes stehen soll, also in einer Zeile mit w=5 soll in t folgender Text stehen: „[MeinWert] hat den Wert 5“.

Um das mit einer Same-Formel mit typed calculation zu rechnen, gibt man folgenden Ausdruck an:


'[MeinWert] hat den Wert‘ +  [w]


und bekommt das gewünschte Ergebnis.


Ändert man den Typ der Formel auf nicht typed, so bekommt man einen Fehler, da [MeinWert] nicht aufgelöst werden kann. Auch Escapen, z.B. mit „\“, oder Quoten löst das Problem nicht.