Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v18.4
Datentypen
|
Datentyp | Datenfeld | Variable | Ausdruck |
String (siehe 1.) | Ja | Ja | Ja |
Zahl (siehe 2.) | Ja | Ja | Ja |
Datum | Ja | Ja | Ja |
Zeit | Ja | Ja | Ja |
Boolean | Ja | Ja | Ja |
Bild | Ja | Ja | Ja |
Zeiger | Nein | Ja | Ja |
BLOB (siehe 3.) | Ja | Ja | Ja |
Array (siehe 4.) | Nein | Ja | Nein |
Ganzzahl 64 bits (siehe 5.) | Ja | Nein | Nein |
Objekt | Ja | Ja | Ja |
Collection | Nein | Ja | Nein |
Variant | Nein | Ja | Nein |
Undefiniert | Nein | Ja | Ja |
Null | Nein | Nein | Ja |
Hinweise
Es gibt keinen Unterschied zwischen einer Variablen vom Typ alphanumerisch oder Text.
Sie können einen alphanumerischen Wert einem Textfeld zuordnen und umgekehrt. 4D erledigt die Konvertierung und kürzt bei Bedarf. In Ausdrücken können Sie alphanumerisch und Text gleichzeitig verwenden.
Hinweis: Bei der Beschreibung von Befehlen in diesem Handbuch gilt der Begriff String für beide Arten von Ausdrücken, wenn nichts anderes angegeben ist.
Numerisch ist der Oberbegriff für:
Der Typ Zahl umfasst den Bereich ±1,7e±308 bei 13 Stellen Genauigkeit.
Der Typ Ganzzahl umfasst den Bereich -32 768 bis 32 767 (2 Bytes).
Der Typ Lange Ganzzahl umfasst den Bereich -2 147 483 648 bis 2 147 483 647 (4 Bytes).
Sie können numerische Datentypen untereinander zuweisen. 4D erledigt die Konvertierung und kürzt oder rundet bei Bedarf. Bei Werten außerhalb des entsprechenden Bereichs liefert die Konvertierung keinen gültigen Wert. Sie können numerische Datentypen in Ausdrücken auch miteinander mischen.
Hinweis: Bei der Beschreibung von Befehlen in diesem Handbuch gilt der Begriff numerisch für alle Datentypen der Art Zahl, Ganzzahl und Lange Ganzzahl, wenn nichts anderes angegeben ist.
Da Datum in JavaScript ein Objekt ist, wird es an 4D, wie jedes andere Objekt, als Text mit JSON Formular gesendet. Dieses Prinzip wird insbesondere bei 4D Mobile oder Web Area implementiert.
Das JSON Formular des Objekts JavaScript Datum berücksichtigt den Standard ISO 8601, z.B. "2013-08-23T00:00:00Z"
Sie müssen selbst für die Konvertierung in ein 4D Datum (C_DATE) sorgen. Es gibt zwei Lösungen:
C_TEXT($1) // Ein Datum in ISO Format empfangen
C_DATE($d)
$d:=JSON Parse("\""+$1+"\"";Is date))
C_TEXT($1) // Ein Datum in ISO Format empfangen
C_DATE($d)
$d:=Date($1)
Es gibt folgende Unterschiede: JSON Parse berücksichtigt den Konvertierungsmodus, der über den Befehl SET DATABASE PARAMETER (sofern vorhanden) gesetzt wurde. Die Funktion Date berücksichtigt dagegen immer die lokale Zeitzone.
Hinweis: Ist in 4D v16 R6 "Datumstyp" die aktuelle Einstellung zum Speichern des Datums, verwalten die Funktionen JSON Parse und Date ein JSON Datum im Format "YYYY-MM-DD" automatisch als Datumswert. Weitere Informationen dazu finden Sie auf der Seite Kompatibilität unter der Option Verwende Datumstyp statt ISO Datumsformat in Objekten.
Datenfelder, Variablen oder Ausdrücke vom Typ Boolean können WAHR oder FALSCH sein.
Datenfelder, Variablen oder Ausdrücke vom Typ Bild können sowohl im Windows- als auch im Macintosh-Format sein. Dazu gehört jedes Bild, das Sie in die Zwischenablage legen oder mit Befehlen von 4D bzw. Plug-Ins von der Festplatte lesen können.
Variablen oder Ausdrücke vom Typ Zeiger verweisen auf eine andere Variable (inkl. Arrays oder Tabellenelemente), Tabelle bzw. Datenfeld. Ein Datenfeld kann nicht vom Typ Zeiger sein. Weitere Informationen dazu finden Sie im Abschnitt Zeiger.
Datenfelder, Variablen oder Ausdrücke vom Typ BLOB sind eine Reihe Bytes (von 0 bis 2 GB Länge), die Sie individuell oder über BLOB Befehle (siehe Kapitel BLOB) zuweisen können.
Hinweis: Bei der Beschreibung von Befehlen in diesem Handbuch werden BLOB Parameter als BLOB bezeichnet.
Variablen, Felder oder Ausdrücke vom Typ Objekt können verschiedene Datentypen enthalten. Die Struktur von "native" 4D Objekten basiert auf dem klassischen Prinzip von "Eigenschaft/Wert" bzw. "Attribut/Wert" Paaren. Die Syntax dieser Objekte basiert auf JSON, folgt ihr aber nicht komplett.
Warnung: Beachten Sie, dass Attributnamen zwischen Groß- und Kleinschreibung unterscheiden.
Objekte vom Typ Variable, Felder oder Ausdruck verwalten Sie über Befehle im Kapitel Objekte (Sprache), wie z.B. OB Get und OB SET, oder über die Objektnotation (siehe Objektnotation verwenden). Über spezifische Befehle im Kapitel Suchen wie QUERY BY ATTRIBUTE, ORDER BY ATTRIBUTE und QUERY SELECTION BY ATTRIBUTE können Sie mit Objektfeldern arbeiten.
Da Objektfelder in der Regel auf Text basieren, erscheint der Inhalt eines Objektfeldes in einem 4D Formular standardmäßig als Text und ist in JSON formatiert.
(*) Wenn als Text im Debugger dargestellt oder in JSON exportiert, zeigen die Eigenschaften des Objekts Bild "[Objekt Bild]" an. Beachten Sie, dass danach Sichern des Datensatzes den String "[Objekt Bild]" in der Eigenschaft sichert.
Hinweis: Zum Arbeiten mit JSON Objekten können Sie die Befehle im Kapitel JSON verwenden.
Eine Collection Variable kann eine Sammlung von Werten unterschiedlicher Typen enthalten. Hierzu ein Beispiel:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan";500;100;True)
//$col=["Ford","Renault","Nissan",500,100,true]
Unterstützt werden die Typen Text, Zahl, Objekt, Boolean, Collection oder Null. Es gibt keinen Ausdruck oder Feld vom Typ Collection.
Zum Verwalten von Collection Variablen benötigen Sie Objektnotation (siehe Objektnotation verwenden) und die Befehle im Kapitel Collections.
Beispiel:
C_COLLECTION($col)
$col:=New collection("Ford";"Renault";"Nissan")
$col[1]:="BMW"
//$col=["Ford","BMW","Nissan"]
Collection Variablen speichern JSON Arrays. Ein JSON Array ist eine Sammlung von Werten beliebiger Typen, getrennt durch Komma. Sie können JSON Arrays in Collections speichern: Beispiele:
C_COLLECTION($c1;$c2)
C_TEXT($json1;$json2)
$c1:=JSON Parse("[\"Ford\",\"Renault\",\"Nissan\",500,100,true]")
$json1:=JSON Stringify($c1)
//$json1=["Ford","Renault","Nissan",500,100,true]
$c2:=JSON Parse("[1,2,3,\"a\",\"b\",\"c\"]")
$json2:=JSON Stringify($c2)
//$json2=[1,2,3,"a","b","c"]
Variant ist ein Variablentyp, um Daten von beliebigem festen Typ in eine Variable zu setzen. Dieser Typ lässt sich z.B. zum Schreiben von generischem Code verwenden, der Werte von nicht bekanntem Typ zurückgibt oder empfängt. Das ist beispielsweise bei Code zum Verwalten von Objektattributen der Fall.
Eine Variable vom Typ Variant kann einen Wert in folgenden Datentypen enthalten:
Hinweis: Arrays lassen sich nicht in Variablen vom Typ Variant speichern.
Im interpretierten und im kompilierten Modus kann dieselbe Variable vom Typ Variant Inhalt mit unterschiedlichen Typen zugewiesen werden. Im Gegensatz zu festen Variablentypen ist der Inhaltstyp von Variant unterschiedlich von der Variable selbst. Zum Beispiel:
C_VARIANT($variant)
$variant:="hello world"
$vtype:=Type($variant) // 12 (Is variant)
$vtypeVal:=Value type($variant) // 2 (Is text)
$variant:=42
$vtype:=Type($variant) // 12 (Is variant)
$vtypeVal:=Value type($variant) // 1 (Is real)
Sie können Variablen vom Typ Variant immer verwenden, wo Variablen erwartet werden. Sie müssen nur sicherstellen, dass der Datentyp des Variableninhalts vom erwarteten Typ ist. Beim Zugriff auf Variablen vom Typ Variant wird nur ihr aktueller Wert berücksichtigt. Zum Beispiel:
C_VARIANT($v)
$v:="hello world"
$v2:=$v //die Variable einer anderen Variable zuweisen
$t:=Type($v) // 12 (Is variant)
$t2:=Type($v2) // 2 (Is text)
Mit Variant lassen sich Parameter in Methoden ($0, $1,...) deklarieren, die von unterschiedlichem Typ sein können. In diesem Fall können Sie Code schreiben, der den Typ des Parameterwertes testet, zum Beispiel:
C_VARIANT($1)
Case of
:(Value type($1)=Is longint)
...
:(Value type($1)=Is text)
...
End case
Hinweis: Sind Variablen vom Typ Variant nicht erforderlich (z.B. wenn der Datentyp bekannt ist), empfehlen wir, Variablen mit festen Typen zu verwenden, denn sie bieten bessere Performance, klareren Code und sind für den Compiler hilfreich, da sie Fehler durch Übergeben unerwarteter Datentypen vermeiden.
Undefiniert ist kein Datentyp. Damit wird eine Variable bezeichnet, die noch nicht definiert ist. Eine Funktion (eine Projektmethode, die ein Ergebnis zurückgibt) gibt einen undefinierten Wert zurück, wenn in der Methode dem Ergebnis der Funktion ($0) ein undefinierter Ausdruck zugewiesen wurde (Ausdruck mit mindestens einer undefinierten Variablen). Ein Datenfeld kann nicht undefiniert sein (die Funktion Undefined gibt für ein Datenfeld immer False zurück). Eine Variable vom Typ Variant hat undefiniert als Standardwert.
Null ist ein spezieller Datentyp mit nur einem möglichen Wert: Null. Dieser Wert wird von einem Ausdruck zurückgegeben, der gar keinen Wert enthält.
Aus Sicht der 4D Datenbank bedeutet ein Nullwert, dass der Datenwert unbekannt ist. Es bedeutet NICHT, dass kein Wert existiert, oder dieser leer ist ("" für String oder 0 für Lange Ganzzahl sind leere Werte). In der 4D Datenbank werden Nullwerte in Feldern (außer Objekt Feldattribute) nur von der SQL Engine verwaltet. Über eine spezifische Option für Felder können Sie einstellen, wie die Datenbank diesen Wert behandeln soll (NULL Werten leere Werte zuordnen) und Sie können Nullwerte über die Befehle Is field value Null und SET FIELD VALUE NULL setzen oder lesen.
In der 4D Programmiersprache und für Objekt Feldattribute werden Nullwerte über die Funktion Null verwaltet. Sie lässt sich mit folgenden Ausdrücken zum Setzen oder Vergleichen des Nullwerts verwenden:
Ein Array ist kein Datentyp. Unter diesem Oberbegriff werden Arrays der Art Zahl, Text etc. zusammengefasst. Arrays sind Variablen — Datenfelder und Ausdrücke können nicht vom Typ Array sein. Weitere Informationen dazu finden Sie im Kapitel Arrays.
Hinweis: Im Allgemeinen werden Array Parameter in Befehlsbeschreibungen als Arrays bezeichnet, in spezifischen Fällen wird Array Text, Array Zahl, etc. verwendet
Die 4D Programmiersprache enthält Operatoren und Befehle, um bei Bedarf zwischen Datentypen zu konvertieren. Die 4D Programmiersprache unterstützt die Überprüfung von Datentypen. Sie können nicht schreiben: "abc"+0.5+!12/25/96!-?00:30:45?. Das ergibt Syntaxfehler.
Nachfolgende Liste zeigt die wichtigsten Datentypen, in welchen Typ sie konvertiert werden können und die dafür verwendeten Befehle:
Datentyp | konvertieren in | konvertieren in | konvertieren in | konvertieren in |
Alphanumerisch | Numerisch | Datum | Zeit | |
Alphanumerisch (*) | Num | Date | Time | |
Numerisch (**) | String | |||
Datum | String | |||
Zeit | String | |||
Boolean | Num | |||
Objekt | JSON Stringify | |||
Collection | JSON Stringify |
(*) In JSON formatierte Strings lassen sich über die Funktion JSON Parse in skalare Daten, Objekte oder Collections konvertieren.
(**) Werte vom Typ Zeit lassen sich wie Zahlen behandeln.
Hinweis: Durch Kombinieren von Operatoren und anderen Befehlen erreichen Sie auch komplexere Datenkonvertierungen.
Compiler Direktiven
Einführung in Arrays
Methoden
Richtlinien zur Typisierung
Type
Überblick über JSON Befehle
Variablen
Zeiger
Produkt: 4D
Thema: Grundbegriffe
Geändert: 4D v16 R4
Geändert: 4D v16 R6
Geändert: 4D v18
4D Programmiersprache ( 4D v18)
4D Programmiersprache ( 4D v18.4)
4D Programmiersprache ( 4D v18.6)