4D v16

Zeiger

Home

 
4D v16
Zeiger

Zeiger    


 

 

Hier sehen Sie, wie Zeiger arbeiten und, wie Sie damit Ihre Programmierung optimieren und generisch machen können.

In der vorigen Übung haben wir jede Aktion, wie Suchen, Sortieren, in der Methode Navigator_Functions eingerichtet. Das ist mühselig. Jetzt wollen wir die Aktion der Tabelle der jeweiligen Seite zuordnen.

Es ist einfacher, die entsprechende Tabelle nur einmal zu Beginn der Methode anzugeben. Wir können diese Anweisung in einer Variablen speichern und sie dann in Befehlen verwenden.

Eine Variable ist nicht dasselbe wie eine Tabelle; beide sind vollkommen unterschiedlich und haben auch anderen Inhalt. Eine Variable ist vom Typ Ganzzahl, Text, Bild, etc. und enthält einen Wert. Eine Tabelle ist dagegen kein “Inhalt” wie es ein Wert vom Typ Zahl ist.

Die Lösung ist, eine Variable vom Typ Zeiger zu verwenden.

Wir setzen diese Variable, es ist eine lokale Variable:

 C_POINTER($TablePointer)

Diese Variable existiert im Speicher. Um einen Wert zuzuweisen, verwenden wir folgende Syntax:

 $TablePointer:=->[INTERVENTIONS]

Wie für Variablen üblich, haben wir:

  • Initialisierung
  • Wertzuweisung

und später können wir die Tabelle Interventions überall, wo sie verwendet wird, mit dieser Variablen ersetzen, die wir dann noch "dereferenzieren" müssen.

Da der gesamte Code hier liegt, lässt sich der Bereich einfach durch Ändern der Tabelle und Kopieren-Einsetzen dieser 2 Zeilen Code ersetzen, vorausgesetzt, wir haben zuvor einen Zeiger auf die Tabelle gesetzt, der sie dann gemäß der Seitennummer wählt.

Wir nehmen also den zuvor geschriebenen Code und geben folgendes ein:

  • Sind wir auf Seite 1, zeigen wir auf die Einsätze (->[INTERVENTIONS])
  • Sind wir auf Seite 2, zeigen wir auf die Techniker (->[TECHNICIANS])

Damit müssen wir hier nicht mehr bie jeder Aktion die Seiten testen und wir brauchen diese doppelte Programmierung nicht mehr.
Nach der Überarbeitung könnte die Methode so aussehen:

Wir haben einen Code, mit dem wir:

  • Die entsprechende Tabelle passend zur Seite setzen
  • Und dann die Aktion unabhängig von der Seite setzen

Dasselbe Prinzip gilt für Suchläufe:

  • Wir ziehen den Code hierhin
  • Entfernen hier komplett die "Case of" Anweisung
  • Und ersetzen "Intervention" mit einem Zeiger auf die Tabelle, da wir auf Seite 2 sind

Verweist der Zeiger auf "Technicians", läuft die Suche in der Tabelle "Technicians". Die Anzahl der gefundenen Datensätze ist die Anzahl der gefundenen Datensätze in der Tabelle "Technicians".

Hier sollten Sie folgendes beachten:

Die Verwendung von Zeigern ist ganz einfach und hat den Vorteil, dass die Programmierung noch generischer und anpassbar wird.

Das Konzept eines Zeigers ist etwas, das wir täglich beim Sprechen verwenden.

Im Satz “mein Hund ist zuhause” verwenden wir zwei Zeiger oder indirektes Ansprechen. Denn tatsächlich definiert “mein Hund” weder den Namen noch die Rasse des Hundes. Sie müssen wissen, wer den Satz sagt, um zu definieren, über welchen Hund wir sprechen.

Wenn Paul sagt “leg es in die Schublade” - welche Schublade meint er? Es ist die Schublade, auf die Paul mit dem Finger zeigt. Er zeigt auf eine Schublade, welche die andere Person "dereferenziert", d.h. sie sieht, auf welche Schublade Pauls Finger zeigt und löst den Zeiger auf.

Dieses einfache Konzept funktioniert auch in 4D. Wir ersetzen Schubladen durch Tabellen, Felder oder Variablen.

Wenn wir 4D anweisen, eine Suche in dieser Tabelle auszuführen, müssen wir zuerst definieren, in welcher Tabelle gesucht werden soll. Dafür erstellen wir folgenden Zeiger:

 MyPointer:=->[TABLE]

Zu Beginn haben Sie vielleicht ein wenig Probleme mit Zeigern, aber Sie werden bald sehen, dass sie sich einfach setzen lassen und sehr leistungsstark sind.
Zeiger dienen oft als Parameter beim Aufrufen von Methoden. Wir empfehlen Ihnen, sich etwas Zeit zu nehmen, um damit vertraut zu werden. Denn das hilft Ihnen bei Operationen wie:

  • "Ich werde diese Schaltfläche duplizieren"
  • oder "Ich muss diese Methode kopieren und dann anpassen"

Wenn Sie Listen mit Zeigern verwalten wollen, können Sie dafür Zeiger Arrays verwenden.

Sie können auch die Funktion Get pointer verwenden, über die Sie den Namen von Zeigern über eine Zeichenkette definieren können.
Beispiel:

 Get pointer("MyVariable"+String($i))

 
 

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Zeiger

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

Self-Training ( 4D v16)