Version 2004 (Geändert)
Definition
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 2,147,483,647 Bytes enthalten (2 GB).
BLOBs und Speicher
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 dazugehörigen Datensatzes.
BLOB Felder werden wie andere Feldtypen, die umfangreiche Datenmengen aufnehmen können (Bilder und Felder vom Typ Unterdatenfeld) beim Ändern eines Datensatzes nicht im Speicher dupliziert. Folglich ist das von den Funktionen Old und Modified zurückgegebene Ergebnis für ein BLOB Feld nicht signifikant.
BLOBs anzeigen
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.
BLOB Felder
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.
Parameterübergabe, Zeiger und Funktionsergebnisse
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:
` Deklariere eine Variable vom Typ BLOB C_BLOB (anyBlobVar) ` Das BLOB wird als Parameter für einen 4D Befehl übergeben SET BLOB SIZE (anyBlobVar;1024*1024) ` Das BLOB wird als Parameter für eine externe Routine übergeben $errCode:= Do Something With This BLOB (anyBlobVar) ` Das BLOB wird als Parameter auf eine Methode übergeben, die ein BLOB zurückgibt C_BLOB (retrieveBlob) retrieveBlob:=Fill_Blob (anyBlobVar) ` Ein Zeiger auf das BLOB wird als Parameter auf eine Benutzermethode übergeben COMPUTE BLOB (->anyBlobVar )
Hinweis für Plug-In Entwickler: Ein BLOB Parameter wird als "&O" deklariert (der Buchstabe "O", nicht die Ziffer "0").
Zuweisung
Sie können BLOBs gegenseitig zuweisen.
Beispiel:
` Deklariere zwei Variablen vom Typ BLOB C_BLOB (vBlobA;vBlobB) ` Setze die Größe des ersten BLOB auf 10 K SET BLOB SIZE (vBlobA;10*1024) ` Weise das erste BLOB dem zweiten zu vBlobB:=vBlobA
Sie können jedoch keinen Operator auf BLOBs anwenden; es gibt keinen Ausdruck vom Typ BLOB.
BLOB Inhalt ansprechen
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:
` Deklariere eine Variable vom Typ BLOB C_BLOB (vBlob) ` Setze Größe des BLOB auf 256 Bytes SET BLOB SIZE (vBlob;256) ` Die u.a. Schleife initialisiert die 256 Bytes des BLOB auf Null For ( vByte ; 0 ; BLOB size (vBlob)-1) vBlob{vByte}:=0 End for
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.
BLOB Befehle von 4D
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 sowie 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.
Diese Befehle werden auf den folgenden Seiten beschrieben.
Darüberhinaus gibt es noch folgende Befehle:
C_BLOB deklariert eine Variable vom Typ BLOB. Weitere Informationen dazu finden Sie im Kapitel Compiler.
Mit GET CLIPBOARD und APPEND CLIPBOARD verwalten Sie beliebige Datentypen, die in der Zwischenablage gespeichert sind. Weitere Informationen dazu finden Sie im Kapitel Pasteboard.
Mit GET RESOURCE und SET RESOURCE arbeiten Sie mit beliebigen Datentypen und Ressourcen, die auf der Festplatte gespeichert sind.