Operatoren: Unterschied zwischen den Versionen
Georg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Georg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 91: | Zeile 91: | ||
=== Alias-Operator === | === Alias-Operator === | ||
[[Datei-Funktion]]en beziehen sich normalerweise auf die Datei in der aktuellen (aktiven) Workarea. Um auf andere Workareas zuzugreifen, wird der Alias-Operator | [[Dateifunktionen|Datei-Funktion]]en beziehen sich normalerweise auf die Datei in der aktuellen (aktiven) Workarea. Um auf andere Workareas zuzugreifen, wird der Alias-Operator | ||
-> | -> | ||
Zeile 102: | Zeile 102: | ||
Kunden->([[Recno()]]) | Kunden->([[Recno()]]) | ||
Wird auf ein Feld der Workarea zugegriffen, wird der Name der Workarea über den Alias-Operator mit dem Feldnamen verknüpft. Wird auf eine [[Datei-Funktion]] zugegriffen, muss der Begriff hinter dem Alias-Operator in runde Klammern gesetzt werden. | Wird auf ein Feld der Workarea zugegriffen, wird der Name der Workarea über den Alias-Operator mit dem Feldnamen verknüpft. Wird auf eine [[Dateifunktionen|Datei-Funktion]] zugegriffen, muss der Begriff hinter dem Alias-Operator in runde Klammern gesetzt werden. |
Version vom 20. April 2016, 13:36 Uhr
Allgemeines
Unter Operatoren versteht man spezielle Zeichen, die angeben, wie mit Werten bzw. Variablen verfahren werden soll.
Arten der Operatoren
Zuweisungs-Operatoren
direkte Zuweisungs-Operatoren
Der klassische Zuweisungsoperator ist das
=
Da das Gleichheitszeichen aber auch zu den Vergleichs-Operatoren gehört, sollte man zur besseren Lesbarkeit des Codes den Zuweisungs-Operator
:=
verwenden werden.
Der Zuweisungs-Operator kann auch mit mathematischen Operatoren verknüpft werden:
nTag *= 365
und erlaubt eine verkürzte Schreibweise. In Langform sieht das obige Beispiel so aus:
nTag := nTag * 365
indirekte Zuweisungs-Operatoren
Die Sprache lässt auch eine indirekte Zuweisung zu. Eine Funktion liefert ein Ergebnis zurück. Werden jedoch mehrere Ergebnisse aus einer Funktion benötigt, kann die Funktion entweder ein Array mit den Ergebnissen zurückgeben, oder bestimmte Parameter werden by reference übergeben:
nErgebnis := BerechneWas(nWert1, nWert2, @nSteuer, @nBestand)
Die Variablen nSteuer und nBestand werden by reference übergeben, während die Variablen nWert1 und nWert2 by value übergeben werden.
Eine Übergabe by value übergibt eine Kopie des Variablen-Inhalts, während eine Übergabe by reference eine Referenz auf die Variable übergibt, d.h. die aufgerufene Funktion kann den Inhalt der Variablen verändern.
Arrays und Objekte werden by reference übergeben.
In unserem Beispiel kann die Funktion BerechneWas() den beiden Variablen nSteuer und nBestand neue Werte zuweisen.
Vergleichs-Operatoren
Ein Vergleichsoperator vergleicht zwei Variablen miteinander und liefert entweder TRUE oder FALSE als Ergebnis zurück.
'A' > 'B' => FALSE
Es werden die bekannten mathematischen Vergleichs-Operatoren unterstützt:
= > < >= <=
Als weiteren Vergleichs-Operator gibt es noch
==
Hiermit wird auf vollständige Gleichheit verglichen, auch in Abhängig von SET EXACT bzw. SET LEXICAL. Wenn zwei Strings mit = verglichen werden, endet der Vergleich mit dem Ende des ersten Strings. Tritt bis zu dieser Stelle keine Abweichung auf, werden beide Strings als gleich angesehen:
cEins := "abcdefg" cZwei := "abcdef" cEins = cZwei => TRUE cZwei = cEins => FALSE cEins == cZwei => FALSE
Der Vergleich cEins = cZwei vergleicht nur die ersten sechs Zeichen von cEins mit cZwei, da cZwei nur eine Länge von sechs Zeichen hat. Da die ersten sechs Byte in beiden Variablen identisch sind, liefert der Verleich ein TRUE.
Der Vergleich cZwei = cEins vergleicht neben den ersten sechs Zeichen auch das siebte Zeichen von cEins, das in cEins nicht mehr vorhanden ist. Daher ist dieser Vergleich FALSE.
Der Vergleich cEins == cZwei erzwingt einen Vergleich beider Strings in der vollständigen Länge beider Strings und liefert daher ebenfalls FALSE.
Für den Einsatz des einfachen Vergleichs gelten folgende Regeln:
ist cZwei (der Wert auf der rechten Seite) ein leerer String, ergibt der Vergleich TRUE ist cZwei länger als cEins, werden nur die Zeichen von cEins mit den korrespondieren Stellen von cZwei verglichen
mathematische Operatoren
Zeichen-Operatoren
Alias-Operator
Datei-Funktionen beziehen sich normalerweise auf die Datei in der aktuellen (aktiven) Workarea. Um auf andere Workareas zuzugreifen, wird der Alias-Operator
->
verwendet.
Der Alias-Operator kennt zwei unterschiedliche Formen:
Kunden->Ort Kunden->(Recno())
Wird auf ein Feld der Workarea zugegriffen, wird der Name der Workarea über den Alias-Operator mit dem Feldnamen verknüpft. Wird auf eine Datei-Funktion zugegriffen, muss der Begriff hinter dem Alias-Operator in runde Klammern gesetzt werden.