4D v16.3

VARIABLE TO BLOB

Home

 
4D v16.3
VARIABLE TO BLOB

VARIABLE TO BLOB 


 

VARIABLE TO BLOB ( Variable ; BLOB {; Offset | *} ) 
Parameter Typ   Beschreibung
Variable  Variable in Variable, die im BLOB gespeichert werden soll
BLOB  BLOB in BLOB, das die Variable empfängt
Offset | *  Variable, Operator in Versatz der Variablen im BLOB (in Bytes) oder *, um Variable am Ende anzufügen
in Neuer Versatz nach Schreiben ohne *

Der Befehl VARIABLE TO BLOB speichert die Variable Variable in BLOB.

Mit dem optionalen Parameter * wird die Variable im BLOB angefügt und dessen Größe entsprechend erweitert. Mit dem optionalen Parameter * können Sie beliebig viele Variablen oder Listen sequentiell in einem BLOB speichern (siehe andere BLOB Befehle), solange der Speicher dafür ausreicht.

Geben Sie den optionalen Parameter * bzw. den Variablenparameter Offset nicht an, wird die Variable am Anfang des BLOB gespeichert. Sie überschreibt seinen bisherigen Inhalt; die Größe des BLOB wird entsprechend angepasst.

Geben Sie den Variablenparameter Offset an, wird die Variable am Versatzpunkt (beginnend mit Null) geschrieben. Unabhängig, wo Sie die Variable schreiben, wird die Größe des BLOB gemäß der übergebenen Positionierung erhöht, falls notwendig plus der Größe der Variablen. Neu zugewiesene Bytes werden im Gegensatz zu den geschriebenen Bytes auf Null initialisiert.

Nach dem Aufruf wird der Variablenparameter Offset zurückgegeben, erhöht um die Anzahl der geschriebenen Bytes. Von daher können Sie dieselbe Variable mit einem anderen BLOB schreibenden Befehl wiederverwenden, um eine andere Variable oder Liste zu schreiben.

VARIABLE TO BLOB akzeptiert jeden Variablentyp, einschließlich anderer BLOBs. Davon ausgenommen sind:

  • Zeiger
  • Array mit Zeigern

Bitte beachten Sie folgendes:

  • Speichern Sie eine Variable vom Typ Lange Ganzzahl als Referenz auf eine hierarchische Liste (ListRef), speichert VARIABLE TO BLOB die Variable Lange Ganzzahl und nicht die Liste. Zum Speichern und Wiederfinden hierarchischer Listen in und aus einem BLOB verwenden Sie die Befehle LIST TO BLOB und BLOB to list.
  • Übergeben Sie ein Objekt C_OBJECT im Parameter Variable, setzt der Befehl es in das BLOB als JSON in UTF-8. Enthält C_OBJECT Zeiger, werden ihre dereferenzierten Werte im BLOB gespeichert und nicht die Zeiger selbst.

Speichern Sie jedoch eine Variable Lange Ganzzahl, die eine Referenz auf eine hierarchische Liste ist (ListRef), speichert VARIABLE TO BLOB die Variable Lange Ganzzahl und nicht die Liste. Um hierarchische Listen in und aus einem BLOB zu speichern und zu finden, verwenden Sie die Befehle LIST TO BLOB und BLOB to list.

Warnung: Speichern Sie Variablen in einem BLOB, müssen Sie später mit dem Befehl BLOB TO VARIABLE den Inhalt des BLOB auslesen, da Variablen in BLOBs mit einem internen 4D Format gespeichert werden.

Hinweis zur Plattformunabhängigkeit: VARIABLE TO BLOB und BLOB TO VARIABLE verwalten die in BLOBs gespeicherten Variablen in einem internen 4D Format. Beim Einsetzen dieser beiden Befehle müssen Sie sich deshalb nicht um den Austausch von Bytes zwischen den Plattformen kümmern. Mit anderen Worten, Sie können ein unter Windows erstelltes BLOB auf Macintosh wiederverwenden und umgekehrt.

Mit den beiden nachfolgenden Projektmethoden können Sie Arrays in und aus Dokumenten rasch speichern bzw. wiederfinden:

  ` Projektmethode SAVE ARRAY
  ` SAVE ARRAY ( String ; Zeiger )
  ` SAVE ARRAY ( Dokument ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayData)
 VARIABLE TO BLOB($2->;$vxArrayData` Speichere Array im BLOB
 COMPRESS BLOB($vxArrayData` Komprimiere BLOB
 BLOB TO DOCUMENT($1;$vxArrayData` Sichere BLOB auf Festplatte
 
  ` Projektmethode LOAD ARRAY
  ` LOAD ARRAY ( String ; Zeiger )
  ` LOAD ARRAY ( Dokument ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayData)
 DOCUMENT TO BLOB($1;$vxArrayData` Lade BLOB von Festplatte
 EXPAND BLOB($vxArrayData` Erweitere BLOB
 BLOB TO VARIABLE($vxArrayData;$2->) ` Finde Array aus dem BLOB wieder

Haben Sie diese Methoden hinzugefügt, können Sie schreiben:

 ARRAY STRING(...;asAnyArray;...)
  ` ...
 SAVE ARRAY($vsDocName;->asAnyArray)
  ` ...
 LOAD ARRAY($vsDocName;->asAnyArray)

Mit den beiden nachfolgenden Projektmethoden können Sie jede Variablenmenge in und aus einem BLOB speichern bzw. wiederfinden:

  ` Projektmethode STORE VARIABLES INTO BLOB
  ` STORE VARIABLES INTO BLOB ( Zeiger { ; Zeiger ... { ; Zeiger } } )
  ` STORE VARIABLES INTO BLOB ( BLOB { ; Var1 ... { ; Var2 } } )
 C_POINTER(${1})
 C_LONGINT($vlParam)
 
 SET BLOB SIZE($1->;0)
 For($vlParam;2;Count parameters)
    VARIABLE TO BLOB(${$vlParam}->;$1->;*)
 End for
 
  ` Projektmethode RETRIEVE VARIABLES FROM BLOB
  ` RETRIEVE VARIABLES FROM BLOB ( ´Zeiger { ; Zeiger ... { ; Zeiger } } )
  ` RETRIEVE VARIABLES FROM BLOB ( BLOB { ; Var1 ... { ; Var2 } } )
 C_POINTER(${1})
 C_LONGINT($vlParam;$vlOffset)
 
 $vlOffset:=0
 For($vlParam;2;Count parameters)
    BLOB TO VARIABLE($1->;${$vlParam}->;$vlOffset)
 End for

Haben Sie diese Methoden hinzugefügt, können Sie schreiben:

 STORE VARIABLES INTO BLOB(->vxBLOB;->vgPicture;->asAnArray;->alAnotherArray)
  ` ...
 RETRIEVE VARIABLES FROM BLOB(->vxBLOB;->vgPicture;->asAnArray;->alAnotherArray)

Wurde die Variable erfolgreich gespeichert, wird die OK Variable auf 1 gesetzt, andernfalls auf 0. Das tritt zum Beispiel ein, wenn nicht genügend Speicher vorhanden ist.



Siehe auch 

BLOB to list
BLOB TO VARIABLE
LIST TO BLOB

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: BLOB
Nummer: 532

Dieser Befehl ändert die Systemvariable OKThis command can be run in preemptive processes

 
GESCHICHTE 

Erstellt: 4D v6
Geändert: 4D v14

 
SCHLÜSSELWÖRTER 

ListRef, Variable

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)