Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v18.4
Datentypen

Datentypen  


 

 

Übersicht über Datentypen für Datenfelder, Variablen und Ausdrücke von 4D:

DatentypDatenfeldVariableAusdruck
String (siehe 1.)JaJaJa
Zahl (siehe 2.)JaJaJa
DatumJaJaJa
ZeitJaJaJa
BooleanJaJaJa
BildJaJaJa
ZeigerNeinJaJa
BLOB (siehe 3.)JaJaJa
Array (siehe 4.)NeinJaNein
Ganzzahl 64 bits (siehe 5.)JaNeinNein
ObjektJaJaJa
CollectionNeinJaNein
VariantNeinJaNein
UndefiniertNeinJaJa
NullNeinNeinJa

Hinweise

  1. String beinhaltet Datenfelder vom Typ alphanumerisch, Variablen mit fester Länge und Datenfelder bzw. Variablen vom Typ Text.
  2. Numerisch beinhaltet Datenfelder und Variablen vom Typ Zahl, Ganzzahl und Lange Ganzzahl.
  3. BLOB ist die Abkürzung für Binary Large OBject. Weitere Informationen dazu finden Sie im Kapitel BLOB.
  4. Array beinhaltet alle Arten von Arrays. Weitere Informationen dazu finden Sie im Kapitel Arrays.
  5. Ganzzahl 64 bits werden nur von SQL verwaltet. Wir empfehlen, diese Datentypen nicht in der 4D Programmiersprache zu verwenden, da sie intern in den Typ Zahl umgewandelt werden und das die Genauigkeit beeinträchtigen kann.

String  

String ist der Oberbegriff für:
  • Datenfelder oder Variablen vom Typ alphanumerisch: Ein Datenfeld vom Typ alphanumerisch kann 0 bis 255 Zeichen enthalten (Limit wird bei der Felddefinition festgelegt)
  • Felder bzw. Variablen vom Typ Text: Ein Feld, eine Variable oder ein Ausdruck vom Typ Text kann 0 bis 2 GB an Text enthalten
  • Jeder Ausdruck vom Typ alphanumerisch oder Text

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:

  • Datenfeld, Variable oder Ausdruck vom Typ Zahl
  • Datenfeld, Variable oder Ausdruck vom Typ Ganzzahl
  • Datenfeld, Variable oder Ausdruck vom Typ Lange Ganzzahl

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.

  • Datenfelder, Variablen oder Ausdrücke vom Typ Datum umfassen den Bereich 1.1.100 bis 31.12.32.767.
  • Das Datum wird in der deutschen Version von 4D im Format Tag/Monat/Jahr dargestellt, in der internationalen Version im Format Monat/Tag/Jahr.
  • Eine Jahreszahl mit zwei Stellen betrifft standardmäßig das Jahr 1900, außer die Einstellung wurde mit dem Befehl SET DEFAULT CENTURY geändert.
  • Auch wenn die Datumsdarstellung über C_DATE bis zum Jahr 32 767 funktioniert, können über das Betriebssystem laufende Operationen ein niedrigeres Jahr vorschreiben.

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:

  • Über den Befehl JSON Parse:
     C_TEXT($1// Ein Datum in ISO Format empfangen
     C_DATE($d)
     $d:=JSON Parse("\""+$1+"\"";Is date))
  • Über die Funktion 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 Zeit umfassen den Bereich 00:00:00 bis 596.000:00:00.
  • Die Zeit wird in der deutschen und der internationalen Version von 4D im Format Stunde:Minute:Sekunde dargestellt.
  • Zeiten werden im 24 Stundenformat angezeigt.
  • Ein Wert vom Typ Zeit kann wie eine Zahl behandelt werden. Ein Zeitausdruck als Zahl gibt die Zeit in Sekunden an. Weitere Informationen dazu finden Sie im Abschnitt Zeitoperatoren.

Boolean  

Datenfelder, Variablen oder Ausdrücke vom Typ Boolean können WAHR oder FALSCH sein.

Bild  

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.

Zeiger  

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.

BLOB  

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.

Objekt  

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.

  • Ein Eigenschaftenname ist immer ein Text, z.B. "Name" (bis 255 Zeichen, unterscheidet zwischen Groß- und Kleinschreibung)
  • Der Wert einer Eigenschaft kann einer der folgenden Typen sein:
    • Zahl (Zahl, Ganzzahl, etc.)
    • Text
    • Array (Text, Zahl, Boolean, Objekt, Zeiger)
    • Null
    • Boolean
    • Zeiger (als solcher gespeichert, wird beim Verwenden der Funktion JSON Stringify oder beim Kopieren bewertet)
    • Datum (Datumstyp oder ISO Datumsformat - siehe Seite Kompatibilität, Option "Verwende Datumstyp statt ISO Datumsformat in Objekten")
    • Objekt (Objekte können in mehrere Stufen verschachtelt sein)
    • Bild (*)
    • Collection

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.

  • Über die Elementnummer (Index) greifen Sie auf Collection Elemente zu
  • Zur Angabe eines Elements verwenden Sie folgende Syntax: myCollection[N], wobei N der Index des Collection Elements ist
  • Warnung: Der Index von Collection Elementen startet bei 0

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  

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:

  • BLOB
  • Boolean
  • Collection
  • Datum
  • Lange Ganzzahl
  • Objekt
  • Bild
  • Zeiger
  • Zahl
  • Text
  • Zeit
  • Null
  • Undefiniert

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  

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:

  • Objekt Attribute
  • Collection Elemente
  • Variablen vom Typ Objekt, Collection, Zeiger, Bild oder Variant

Array  

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:

Datentypkonvertieren inkonvertieren inkonvertieren inkonvertieren in
AlphanumerischNumerischDatumZeit
Alphanumerisch (*)NumDateTime
Numerisch (**)String
DatumString
ZeitString
BooleanNum
ObjektJSON Stringify
CollectionJSON 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.



Siehe auch 

Compiler Direktiven
Einführung in Arrays
Methoden
Richtlinien zur Typisierung
Type
Überblick über JSON Befehle
Variablen
Zeiger

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Grundbegriffe

 
SEITENINHALT 
 
GESCHICHTE 

New
Geändert: 4D v16 R4
Geändert: 4D v16 R6
Geändert: 4D v18

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v18)
4D Programmiersprache ( 4D v18.4)
4D Programmiersprache ( 4D v18.6)