TurboPL Referenz

Variablen

Top  Previous  Next

Zur Variablendeklaration kennt TurboPL die folgenden Datentypen.

String: Für beliebig lange Zeichenketten. Dieser werden intern als Unicode gespeichert.
Integer: Ganze Zahlen im Bereich -9^63 bis +9^63 (d.h. -9223372036854775807 bis +9223372036854775807)
Date: Tagesdatum
Time: Uhrzeit
DateTime: Kombination aus Datum und Uhrzeit
Real (oder Number): Für Fließkommazahlen, die Rechengenauigkeit beträgt 15 Stellen inklusive Vorzeichen und Komma
Object: Referenz auf ein Objekt (zum Beispiel Formular, eingebettete Tabelle, Bericht, Index).

Von diesen Typen können einzelne Variablen sowie Arrays (=Felder) angelegt werden. Zusätzlich gibt es den Typ RECORD(=Datensatz) zur Speicherung von Satzinhalten. Variablen werden mit vardef angelegt. In einem vardef können gleichzeitig mehrere Variablen des gleichen Typs definiert werden.

VarDef Einzelbetrag, Gesamtsumme: Real
VarDef Eingabe, Ausgabe, Zeile: String

Felder (Arrays)

Felder können bis zu 10 Dimensionen umfassen. In der Variablenanlage wird in eckigen Klammern der höchste Index der jeweiligen Dimension angegeben:

VarDef Vektor: Real[10]
VarDef Matrix: Integer[4,4]

Die einzelnen Feldelemente werden wiederum durch Indizierung in eckigen Klammern angesprochen. Der Index des ersten Feldelements ist immer 0. Beim Feld "Vektor" sind demnach folgende Feldelemente verfügbar:

Vektor[0], Vektor[1], ... , Vektor[10]

Mit der Standard-Funktion Redim kann die Dimension und der Rang des Arrays zur Laufzeit geändert werden, mit der Funktion High erhält man den Index des letzten Feldelements.

Ein Feld darf maximal 16 MB groß sein. Dies entspricht ca. 2 Mio. Einträgen bei Zahlen-Feldern und 4 Mio. Einträgen bei String-Feldern.

Bit-Felder (Bit-Arrays)

Eine besondere Rolle nehmen die Bit-Felder (Bit-Arrays) ein. Obwohl es den Datentyp Bit als solchen gar nicht gibt, kann man jedoch folgendes definieren:

VarDef Bits: Bit[100000]

Ein Eintrag in solches Array kann nur die Werte 0 oder 1 annehmen. Der Vorteil dabei ist, dass ein solches Array sehr platzsparend angelegt wird und dass logische Verknüpfungen mit solche Arrays durchgeführt werden können. Zusätzlich zu den Möglichkeiten mit normalen Arrays können Sie Bit-Arrays:

in GetMarks und PutMarks verwenden, um die aktuellen Markierungen einer Tabelle zu lesen oder zu setzen,
in den logischen Verknüpfungen BitAnd, BitOr und BitAndNot benutzen.

Obwohl es viele denkbare Einsatzbereiche für Bit-Arrays gibt, werden sie am häufigsten dazu benutzt, um verschiedene Markierungslisten schnell zu verknüpfen.

Initialisierung

Die Variablen, die innerhalb einer Prozedur angelegt werden, werden beim Aufruf der Prozedur folgendermaßen initialisiert:

String                                ""

Integer                                0

Real                                0.0

Date                                Das fiktive Datum 0.1.0000

Time                                00:00:00

DateTime                        Der fiktive Zeitstempel 0.1.0000 0:00:00.000

Globale Variablen werden beim Laden des Programms ebenfalls auf diese Werte initialisiert. Änderungen bleiben aber bis zum Ende der Anwendung bzw. bis zum Neukompilieren oder bis zum Öffnen eines anderen Projekts erhalten. Um globale Variablen auf einen anderen Wert zu initialisieren, verwenden Sie die Prozedur OnOpenProject. Beachten Sie jedoch, dass diese im Entwickler-Modus nicht aufgerufen wird. Während der Entwicklung müssen Sie also ggf. diese Prozedur manuell aufrufen.

Eine weitere Möglichkeit, Einzelvariablen anzulegen, bietet das Kommando LET. Hier wird der Variablen direkt ein Wert zugewiesen. Aus diesem Grund ist eine Typangabe nicht erforderlich, da der Typ aus dem Wert bestimmt wird:

LET Ausgabedatei = "EXTERN.TXT"
LET PI = 3.1415

Verwendung

Der Zugriff auf den Wert einer Variablen erfolgt durch Angabe des Variablennamens. Wie aus der Syntaxbeschreibung ersichtlich, dürfen Variablen überall dort verwendet werden, wo auch Feldzugriffe oder Funktionen erlaubt sind.

Durch die Verwendung des Zuweisungsoperators ":=" können Variablen auch innerhalb von Ausdrücken verändert werden. In diesem Fall wird zunächst der auf den Zuweisungsoperator folgende Ausdruck berechnet. Dann wird dessen Wert in die Variable übertragen. Schließlich liefert der Variablenwert dann das Ergebnis der kompletten Zuweisung.

Im einfachsten Fall sieht eine Zuweisung dann folgendermaßen aus:

Bezeichner := Ausdruck

Es können jedoch auch mehrere Variablen gleichzeitig zugewiesen werden:

Startwert := Endwert := Durchschnitt := 100

Zuweisungen können auch irgendwo inmitten eines Ausdrucks stehen:

IF Text := Reset("C:\EXTERN.TXT") > 0 AND Zeile := ReadLn(Text) = "Code 123"

In diesem Beispiel wird im ersten Teil der Selektion die Variable Text belegt, im zweiten die Variable Zeile.

Satzpuffer

Zum Zwischenspeichern von Datensätzen einer Tabelle dienen die Record-Variablen. Mit dem Kommando

VarDef EinKunde: Record KUNDEN;

wird eine Variable angelegt, die genauso viele Bytes umfaßt wie ein Datensatz der Tabelle KUNDEN. Auf die einzelnen Felder des Datensatzes kann wie auf ein Real-Feld zugegriffen werden. Es ist nicht möglich ein Feld vom Typ Record zu verwenden. Das Lesen und Schreiben einer Datensatzvariablen erfolgt über die Funktionen GetRec und PutRec.

Konstanten

Zusätzlich zu Variablen gibt es noch die Möglichkeit Konstanten zu definieren. Diese können in Modulen wie Variablen eingesetzt werden, allerdings können keine neuen Werte zugeordnet werden. Zum Einsatz kommen Konstanten überall dort, wo der Umgang mit Variablen zweckmäßig ist, der Wert dieser Variablen sich im Programmablauf nicht ändert oder sich ändern darf.

Const Pi =  3.1415
Const CopyrightMsg = "Copyright 2000 by dataWeb GmbH"

Einen Wertetyp brauchen Sie dabei nicht angeben, dieser wird bei der Definition automatisch bestimmt. Sinnvollerweise sollten Konstanten am Beginn eines Modules definiert werden, da sie damit allen Prozeduren zur Verfügung stehen.