Syntax der Ausdrücke
Operator | Name | Beschreibung | Beispiel |
---|---|---|---|
( ) | Klammern | Bei Rechenoperationen sollten die Attribute in Klammer geschrieben werden, um Syntaxprobleme zu vermeiden | (Maximales Überstauvolumen)/5 |
" | Anführungszeichen | Texte/Strings werden unter Anführungszeichen gestellt, gewünschte Leerzeichen müssen innerhalb der Anführungszeichen liegen. | „Text1 “ |
.f0-.fx | Floating Point | Festlegung der Ausgabe der Dezimalstellen für Werte mit Nachkommastellen. | (Maximales Überstauvolumen).f2 |
. | Pointer | Zugriff auf verknüpfte Daten über Pointer | Deckel.Radius |
* | Multiplikation | Multipliziert die Werte seiner Operanden und gibt das Ergebnis zurück. | (Profilhöhe)*5 |
sqrt() | Wurzel | Zieht die Qudatratwurzel aus dem Attribut | sqrt(Fläche) |
sqr() | Quadrat | Bildet das Quadrat aus dem gewählten Attribut | sqr(Fläche) |
/ | Division | Dividiert die Werte seiner Operanden und gibt das Ergebnis zurück. Bei der Division von Ganzzahlen fällt ein eventueller Rest weg, es wird also nicht gerundet. | (Profilhöhe)/2 |
% | Modulo | Dividiert die Werte seiner Operanden und gibt den Divisionsrest zurück. Kann nur auf ganzzahlige Operanden angewendet werden. Ist mindestens ein Operand negativ, so ist das Vorzeichen des Resultats implementationsabhängig. | (Entwässerungssystem)%3 |
< | kleiner | Ergibt den boolschen Wert WAHR, wenn der linke Operand kleiner als der rechte ist, sonst FALSCH. | (Deckelhöhe)<(Sohlhöhe) |
<= | kleiner oder gleich | Ergibt den boolschen Wert WAHR, wenn der linke Operand kleiner oder gleich dem rechten ist, sonst FALSCH. | (Sohlhöhe)<=0 |
= | gleich | Ergibt den boolschen Wert WAHR, wenn die beiden Operanden gleich sind, sonst FALSCH. | (Deckelhöhe)=0 |
<> | ungleich | Ergibt den boolschen Wert WAHR, wenn die beiden Operanden ungleich sind, sonst FALSCH. | Entwässerungssystem<>2 |
>= | größer oder gleich | Ergibt den boolschen Wert true, wenn der linke Operand größer oder gleich dem rechten ist, sonst false. | (Abschnittslänge m)>= 30 |
> | größer | Ergibt den boolschen Wert WAHR, wenn der linke Operand größer als der rechte ist, sonst FALSCH. | (Abschnittslänge m)>100 |
! | Negierung | Invertiert den Wert seiner Operanden. Aus WAHR wird FALSCH und umgekehrt. | !(Deckelhöhe).exists |
& | Und-Verknüpfung | Verknüpft die beiden Operanden und gibt WAHR zurück, wenn beide Operanden den Wert WAHR haben, sonst FALSCH. | !(Anfang Hochwert).exists & !(Ende Rechtswert).exists |
| | Oder-Verknüpfung | Verknüpft die beiden Operanden und gibt WAHR zurück, wenn mindestens einer der beiden Operanden den Wert WAHR hat, sonst FALSCH. | (Material)="MA" | (Material)="Sb" |
.exists | Abfrage-Vorhanden | Abfrage nach dem gesuchten Attribut und gibt WAHR zurück (Objekt wird ausgegeben) | (Deckelhöhe).exists |
.size | Abfrage-Anzahl | Liefert die Anzahl der Elemente für das ausgwählte Attribut | (Individuelles Überstauvolumen).size |
.len | Abfrage-Länge | Liefert die Länge eines Strings | (Name).len |
.max | Abfrage-Maximalwert | Liefert den Maximalwert des Elements für das ausgewählte Attribut | (Individuelles Überstauvolumen).max |
.min | Abfrage-Minimalwert | Liefert den Minimalwert des Elements für das ausgewählte Attribut | (Individuelles Überstauvolumen).min |
.sum | Abfrage-Summation | Summiert die Werte der Elemente eines ausgewählten Attributs | Zuflüsse.Einwohner.sum |
.eq | Vergleichsfunktion für Strings | Vergleicht 2 Strings auf Gleichheit (equal) | Attribut_XY.eq("Test") |
.neq | Vergleichsfunktion für Strings | Vergleicht 2 Strings auf Ungleichheit (not-equal) | Attribut_XY.neq("Test") |
WENN ? DANN : SONST | Wenn-Dann Abfrage | Soll die Beschriftung variabel, je nach bestimmten Eigenschaften eines Objektes erfolgen kann diese vorher abgefragt werden | ((Maximales Überstauvolumen) > 0) ?(Name) :"" |
# | Raute | Eine Folge von Texten (Strings) und Feldnamen verbunden mit # | „Text1 “#Feldname.f2#“ Text“ |
</br> | Neue Zeile | Über den Ausdruch kann eine neue Zeile eingefügt werden | „Text1 “#Feldname.f2#“ Text“ |
.i | integer | Wandelt ein numerisches Feld ineinen Integer-Wert um (ganze Zahl) | Belastungsgrad.i |
.s | string | Wandelt ein numerisches Feld in einen String um | Deckelhöhe.s |
.nth(1) | Individuelle ereignisspezifische Ausdrücke | Der größte Wert eines Arrays wird ausgegeben | (Individuelles Überstauvolumen).nth(1).f2 |
.nth(2) | Individuelle ereignisspezifische Ausdrücke | Der zweitgrößte Wert eines Arrays wird ausgegeben | (Individuelles Überstauvolumen).nth(2).f2 |
.left(n) | Funktion für String(Text)-Attribute | Gibt n Buchstaben des Textes zurück von Links | Name="Schacht_xy_test" -> Name.left(10) -> "Schacht_xy" |
.right(n) | Funktion für String(Text)-Attribute | Gibt n Buchstaben des Textes zurück von Rechts | Name="Schacht_xy_test" -> Name.right(7) -> "xy_test" |
.substr(n,m)) | Funktion für String(Text)-Attribute | Gibt ein Teilstück des Textes zurück mit n von Links und m als die Länge des zurückgelieferten Strings | Name="Schacht_xy_test" -> Name.substr(7,4) -> "_xy_" |
.substr(n)) | Funktion für String(Text)-Attribute | Gibt ein Teilstück des Textes zurück mit n von Links bis zum Ende des Strings | Name="Schacht_xy_test" -> Name.substr(7) -> "_xy_test" |
.count() | Die Funktion wird auf einen String oder Array von Strings angewendet | Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Gross/Kleinschreibung. | Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie Schäden.Kode.count(„BCA“) z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden. |
Die Funktion wird auf einen String oder Array von Strings angewendet.
Es wird ein String als Parameter erwartet (direkt in Form „abc“ oder auch ein Ausdruck, das zu einem String evaluiert, so z.B. „Name Anfangsknoten“).
Ausgegeben wird die Anzahl von Vorkommnisse des Parameter-Stringes in dem Array von Strings, unter Beachtung von Gross/Kleinschreibung.
Um die Anzahl von bestimmten Beobachtungskürzeln anzuzeigen, müsste ein Ausdruck wie Schäden.Kode.count(„BCA“) z.B. in einer Eigenschaftsliste als Tabelle angezeigt werden.
<image005.png>
Hier aufpassen, Schäden.count(„BCA“) wird nicht funktionieren, weil Schäden keine Strings, sondern Objekte zurückliefert. Auch Schaden ist hierfür nicht geeignet, da es keinen Array, sondern einzelne Beobachtungen zeilenweise auswerten wird.
Man kann die Funktion auch für eine Suche verwenden, z.B. ((Name Anfangsknoten).count(„M12“) > 0).
Bei der Implementierung habe ich gesehen, dass es eine undokumentierte Funktion .substr existiert, diese habe ich auch in den Dialog des erweiterten Abfragen eingebaut (siehe oben). Diese erwartet einen oder zwei Integer N und K als Parameter, und liefert einen String, angefangen von N-ten Zeichen und K Zeichen lang, oder, falls K nicht angegeben, bis Stringende. Das kann interessant werden, vielleicht auch zusammen mit der .count() Funktion. Z.B: (Name Anfangsknoten).substr(0, 3).count(„M12”) > 0, um die Knoten zu finden, die „M12“ am Anfang haben – M1222 wird gefunden, KM1222 aber nicht.