Diese Sequenz zeigt, wie Sie Variablen programmieren und Typen definieren, und erläutert ihren Geltungsbereich sowie die Lebensdauer.
Bisher haben wir Variablen für bestimmte Fälle verwendet, z.B. vNbRecords. Jetzt wollen wir näher betrachten, was genau Variablen sind, wie sie arbeiten und welchen Geltungsbereich sie je nach Typ haben.
Wenn wir die Arbeitsweise von 4D mit einer Firma vergleichen, ergibt sich folgendes:
- Eine Firma besteht aus mehreren Abteilungen mit spezifischen Aufgaben, die oft unabhängig von den anderen Abteilungen ausgeführt werden.
- Jede Abteilung erledigt eine bestimmte Anzahl Aufgaben in einer spezifischen Reihenfolge.
- Eine Aufgabe kann unterbrochen werden, weil sie vom Ergebnis eines anderen Prozesses abhängt.
- Dieser neue Prozess verwendet z.B. zusätzlich zu seinen eigenen spezifischen Daten, auch Informationen eines früheren Prozesses.
Das wollen wir nun in ein praktisches Beispiel übertragen:
- Ein Unternehmen hat einen Produktionsbetrieb, eine Verkaufsabteilung und eine Personalabteilung.
- Die Lohnabteilung sammelt die Arbeitsstunden der einzelnen Abteilungen und weist die Löhne an, berechnet die Urlaubstage, etc..
- Zur Berechnung der Löhne müssen Überstundensätze sowie Sozialabgaben und Steuersätze berücksichtigt werden. Diese Information kommt von der Rechtsabteilung, welche diese Angaben auf dem neuesten Stand hält.
Das vergleichen wir jetzt mit 4D:
- 4D kann viele Prozesse gleichzeitig verwalten (Drucken, Inhalt mehrerer Tabellen ansehen, Werkzeugpaletten, Importe, Web Server, Web Services beantworten, usw.)
- Die Methode, die in jedem dieser Prozesse ausgeführt wird, kann mehrere Phasen enthalten.
- Sie kann andere Methoden im gleichen Prozess aufrufen (Kollegen in derselben Abteilung), oder Information aus einem anderen Prozess anfordern (Kollege aus einer anderen Abteilung)
Für jeden Fall sind passende Variablen verfügbar:
- Um Information (im Lese/Schreibmodus) für alle Prozesse zugänglich zu machen, verwenden wir Interprozessvariablen. Damit 4D eine Variable als solche bewertet, muss der Variablenname mit den Symbolen <> beginnen.
(zum Beispiel: <>CurrentDate, <>Rate-TimeTable, etc.) - Beim Ausführen eines Prozesses benötigt eine Methode evtl. Information speziell für diesen Prozess. Dann ist es eine lokale Variable. Ihr Name muss mit dem Symbol $ beginnen.
(zum Beispiel: $Counter, $StampZone, etc.) - Alle anderen Variablen (ohne vorangestellte Symbole) sind Prozessvariablen, sie werden im gleichen Prozess von verschiedenen Methoden verwendet.
(zum Beispiel: vNumRecords, etc.)
Der Punkt zu Informationen, die von der Rechtsabteilung benötigt werden, soll das Konzept der Interprozesskommunikation verdeutlichen.
Über die 4D Befehle GET PROCESS VARIABLE und SET PROCESS VARIABLE lassen sich Variablen aus einem Prozess in einen anderen - ja sogar von einem Client-Rechner zum Server - einlesen oder schreiben.
Hier ein weiteres Beispiel aus dem Lehrbetrieb:
- Die lokale Variable ist das Notebook des Studenten: Nur er kann hineinsehen, darin lesen oder schreiben.
- Die Prozessvariable ist die Tafel: Alle Studenten eines Kurses können sie sehen und benutzen. Jeder Student kann auf ihr lesen, schreiben oder löschen.
- Die Interprozessvariable ist die Informationstafel im Eingangsbereich der Universität, hier stehen z.B. Ergebnisse von Klausuren: Sie ist für alle Studenten, aber auch für Dozenten und den Direktor verfügbar.
Interprozesskommunikation ist, wenn ein Dozent auf der Tafel im Kursraum eines anderen Dozenten liest oder schreibt (Prozessvariable) oder auf die Informationstafel im Eingangsbereich (Interprozessvariable).
Da Sie nun mit dem Geltungsbereich der Variablen vertraut sind, wollen wir uns ansehen, wie sie funktionieren.
In 4D gibt es zwei Variablentypen:
- Einfache Variablen (mit einem einzelnen Wert)
- Arrays (mit mehreren Werten)
Sie können einfache Variablen setzen, die dieselben Typen wie für Felder verwenden (Text, Lange Ganzzahl, Datum, Zeit, BLOB, etc.) und den Typ Zeiger.
Arrays akzeptieren die gleichen Typen, mit Ausnahme von BLOB und Zeit.
Die Lebensdauer von Variablen ist wie folgt:
Stadium | Einfache Variable | Array | Kommentar |
Geburt = Initialisation | C_LONGINT(NumDays) | ARRAY TEXT(ArrayDates;0) |
| | INSERT ELEMENT(ArrayDates;1) |
| | ArrayDates{1}:=!06/05/2012! |
Wachstum = Wertzuweisung | NumDays:=25 | Oder |
| | APPEND TO ARRAY (ArrayDates;!06/05/2012!) |
"Entwicklung" Veröffentlichung = Verwendung | For($i;1;NumDays) | $StartDate:=ArrayDates{1}+18 | Variablen sind im Lese/Schreibmodus |
| End for |
Tod= Aus dem Speicher entfernt, Speicherplatz wird freigegeben | CLEAR VARIABLE (NumDays) | CLEAR VARIABLE(ArrayDates) | Die Variable existiert noch, ihr Inhalt wird erneut initialisiert |
Zum Benennen Ihrer Variablen sollten Sie sich eine bestimmte Regel angewöhnen, damit alles übersichtlich bleibt.
- Verwenden Sie entweder eine "strikte" Nomenklatur
- Oder selbsterklärende Namen
Zu Beginn sollten Sie Namen verwenden, die klar und leicht lesbar sind. Sie können sie später immer noch mit Hilfe der globalen Suchfunktion in 4D umbenennen.
Wie bei jeder Programmiersprache sind Variablen in 4D unumgänglich. Setzen Sie Variablen ein, wann und wo immer Sie können.
Beachten Sie, dass bestimmte Variablen in einem Formular nicht gesehen werden können:
Im vorigen Kapitel haben wir eine Variable zum Anzeigen der Anzahl der Datensätze in einer Tabelle verwendet, die nach einer Suche gefunden werden.
Im Prinzip ist eine Variable ein Platz im Speicher, den wir über ein Objekt in einem Formular darstellen können.
Wir erstellen also ein Projektformular zum Testen mit Namen "Test variables", um zu zeigen, wie Variablen arbeiten.
Wir erstellen eine erste Variable mit Namen v1 und setzen sie auf nicht-eingebbar.
Diese Variable existiert momentan nicht im Speicher; es gibt lediglich einen Bereich auf dem Bildschirm, der den Inhalt der Variablen anzeigt, wenn es welchen gibt.
Wir führen nun folgendes aus:
- Wir setzen eine Schaltfläche daneben, über die wir die Variable deklarieren können.
Weisen den Typ LONGINT zu. - Dann eine 2. Schaltfläche, über die wir dieser Variablen einen Wert zuweisen können: v1:=1500.
- Als nächstes können wir mit dieser Variablen im Speicher eine Berechnung durchführen und z.B. eine Meldung mit ALERT anzeigen
Wir zeigen eine Meldung an, dass ein Argument vom Typ Text erwartet wird, also konvertieren wir Variable v1 nach der Multiplikation mit 12. Wir machen das wie folgt: ALERT(String(v1*12)):
Jetzt testen wir das Formular:
- Variable v1 ist derzeit nicht definiert
- Wenn wir sie deklarieren, wählen wir den Typ LONGINT; er nimmt standardmäßig den Wert 0 an
- Wir können einen Wert zuweisen
- Und können dann mit dieser Variablen eine Berechnung durchführen.
Hier sehen Sie die erste Verwendung einer einfachen Variablen.
Das Prinzip ist dasselbe mit:
- Einer Variablen vom Typ Text, genannt v2
- Bei einer Textvariablen können wir ihren Wert 12 mal anzeigen.
- Bei der Übergabe verbinden wir die Variable mit einem Abstand und multiplizieren die Kombination mit 12.
- "Hello" wird hier eine Variable nicht vom Typ LONGINT, sondern vom Typ Text.
Wir testen das Formular:
- Variable v2 existiert nicht
- Wird sie deklariert, ist sie leer
- Wir können den Wert "Hello" zuweisen
- Und die Variable in einer Berechnung verwenden
4D enthält viele Funktionen zum Bearbeiten von Strings.
Nehmen wir ein Array.
- Wir wollen es in einem PopUp-Menü anzeigen, das wir Pop1 nennen
- Und deklarieren, dass es vom Typ Array ist
- Um ein Text Array "Pop1" zu erstellen, geben wir die Anzahl der Zeilen im Array an, z.B. 3 Zeilen
- Jetzt existiert das Array im Speicher und lässt sich in diesem Objekt darstellen
Als nächstes weisen wir dem Array Werte zu. Wir definieren folgendes:
- die 1. Zeile ist "hello"
- die 2. Zeile ist "bye bye"
- die 3. Zeile ist "see you soon"
Um das Array zu verwenden, können wir z.B. folgendes ausführen:
1. Array Wert + Leerzeichen + 2. Array Wert + Leerzeichen + 3. Array Wert
Wir testen nun das Ergebnis:
- Deklaration: Das Array hat 3 leere Zeilen
- Zugewiesene Werte: "hello" "bye bye" "see you soon"
- Array verwenden: "hello Abstand bye bye Abstand see you soon"
Damit haben wir einen einfachen und raschen Überblick zur Verwendung von Variablen.