4D unterstützt den Datentyp BLOB (Binary Large OBjects).
Sie können BLOB Datenfelder und BLOB Variablen definieren:
- Für ein BLOB Datenfeld wählen Sie im Dialogfenster Feldeigenschaften in der Dropdown-Liste den Typ BLOB aus.
- Für eine BLOB Variable wählen Sie den Compiler-Befehl C_BLOB. Sie können lokale, Prozess-und Interprozessvariablen vom Typ BLOB erstellen.
Hinweis: Für BLOBs gibt es keine Arrays.
Ein BLOB sind in 4D miteinander zusammenhängende Bytes unterschiedlicher Länge, die Sie sowohl als eine Einheit als auch als einzelne Bytes ansprechen können. Ein BLOB kann leer sein (Länge Null) oder bis zu 2147483647 Bytes enthalten (2 GB).
Ein BLOB wird als Ganzes in den Speicher geladen. Eine BLOB Variable existiert nur im Speicher. Ein BLOB Datenfeld wird von der Festplatte in den Speicher geladen sowie der Rest des Datensatzes, zu dem es gehört.
Analog zu anderen Feldtypen, die eine umfangreiche Datenanzahl enthalten können, wie der Typ Untertabelle und Bild, werden BLOB-Felder beim Ändern des Datensatzes nicht im Speicher dupliziert. Folglich ist das Ergebnis, das von den Funktionen Old und Modified bei Anwendung auf ein BLOB-Feld zurückgegeben wird, nicht signifikant.
Ein BLOB kann Daten jeglicher Art enthalten. Von daher gibt es keine Standarddarstellung auf dem Bildschirm. Zeigen Sie ein BLOB Feld bzw. eine BLOB Variable in einem Formular an, erscheinen sie unabhängig vom Inhalt leer.
In BLOB Feldern können Sie Daten jeglicher Art bis zu 2 GB speichern. Ein BLOB Feld können Sie nicht indizieren. Wollen Sie Datensätze zu Werten suchen, die in einem BLOB gespeichert sind, müssen Sie eine Formel einsetzen.
Sie können BLOBs von 4D als Parameter für 4D Befehle oder Plug-In Routinen übergeben, die derartige Parameter erwarten. Sie können BLOBS auch als Parameter für eine Benutzermethode übergeben oder als Funktionsergebnis zurückgeben.
Wollen Sie ein BLOB für eigene Methoden übergeben, definieren Sie einen Zeiger auf das BLOB und übergeben den Zeiger als Parameter.
Beispiele:
C_BLOB(anyBlobVar)
SET BLOB SIZE(anyBlobVar;1024*1024)
$errCode:=Do Something With This BLOB(anyBlobVar)
C_BLOB(retrieveBlob)
retrieveBlob:=Fill_Blob(anyBlobVar)
COMPUTE BLOB(->anyBlobVar)
Hinweis für Plug-In Entwickler: Ein BLOB Parameter wird als “&O” deklariert (der Buchstabe “O”, nicht die Ziffer “0”).
Sie können BLOBs gegenseitig zuweisen.
Beispiel:
Sie können jedoch keinen Operator auf BLOBs anwenden; es gibt keinen Ausdruck vom Typ BLOB.
Sie können jedes Byte eines BLOB über geschweifte Klammern {...} individuell ansprechen. Bytes in einem BLOB werden von 0 zu N-1 nummeriert, wobei N die Größe des BLOB ist. Beispiel:
Da alle Bytes eines BLOB individuell ansprechbar sind, können Sie in einem Feld bzw. einer Variablen vom Typ BLOB speichern, was Sie möchten.
4D bietet folgende Befehle zum Arbeiten mit BLOBS:
- SET BLOB SIZE verändert die Größe eines BLOB Feldes bzw. einer BLOB Variablen.
- BLOB size gibt die Größe eines BLOB zurück.
- Mit DOCUMENT TO BLOB und BLOB TO DOCUMENT laden bzw. schreiben Sie ein ganzes Dokument in bzw. aus einem BLOB (optional, Data- und Ressource-Forks auf Macintosh).
- Mit VARIABLE TO BLOB und BLOB TO VARIABLE sowie LIST TO BLOB und BLOB to list speichern und finden Sie 4D Variablen in BLOBs wieder.
- Mit COMPRESS BLOB, EXPAND BLOB und BLOB PROPERTIES arbeiten Sie mit komprimierten BLOBs
- Mit den Funktionen/Befehlen BLOB to integer, BLOB to longint, BLOB to real, BLOB to text, INTEGER TO BLOB, LONGINT TO BLOB, REAL TO BLOB und TEXT TO BLOB bearbeiten Sie beliebige strukturierte Daten von der Festplatte, dem Betriebssystem,, von Ressourcen, etc..
- Mit DELETE FROM BLOB, INSERT IN BLOB und COPY BLOB verwalten Sie große Datenpakete innerhalb von BLOBs.
- Mit ENCRYPT BLOB und DECRYPT BLOB können Sie Daten in einer 4D Anwendung verschlüsseln und entschlüsseln.
Diese Befehle werden auf den folgenden Seiten beschrieben.
Darüberhinaus gibt es noch folgende Befehle: