4D v16.3

VARIABLE TO BLOB

Inicio

 
4D v16.3
VARIABLE TO BLOB

VARIABLE TO BLOB 


 

VARIABLE TO BLOB ( variable ; BLOB {; offset | *} ) 
Parámetro Tipo   Descripción
variable  Variable in Variable a guardar en el BLOB
BLOB  BLOB in BLOB a recibir la variable
offset | *  Variable, Operador in Offset de la variable (expresado en bytes) en el BLOB o * para añadir el valor
in Nuevo offset después de escritura si se omite *

El comando VARIABLE TO BLOB almacena la variable variable en el BLOB blob.

Si especifica el parámetro opcional *, la variable se añade al BLOB y el tamaño del BLOB se extiende en consecuencia. Utilizando el parámetro opcional *, usted puede almacenar secuencialmente todo número de variables o listas (ver otros comandos BLOB) en un BLOB, el único limite es la memoria disponible.

Si no especifica el parámetro opcional * ni la variable en el parámetro offset, la variable se almacena al comienzo del BLOB, sobre su contenido anterior; el tamaño del BLOB se redimensiona en consecuencia.

Si pasa la variable offset en parámetro, la variable se escribe en BLOB al offset (a partir de cero). Sin importar donde escribe la variable, el tamaño del BLOB aumenta de acuerdo a la ubicación pasada (más el tamaño de la variable, si es necesario). Los nuevos bytes redefinidos, diferentes de los bytes en los que está escribiendo, se inicializan en cero.

Después de llamar el comando, la variable del parámetro offset se incrementa en el número de bytes escritos. Por lo tanto, usted puede reutilizar la misma variable con otro comando de escritura de BLOB para poner otra variable o lista.

VARIABLE TO BLOB acepta todo tipo de variables (incluyendo otros BLOBs), excepto los siguientes:

  • Puntero
  • Array de punteros

Note que:

  • si guarda una variable de tipo Entero largo que es una referencia a una lista jerárquica (ListRef), VARIABLE TO BLOB guardará la variable Entero largo, no la lista. Para guardar y recuperar las listas jerárquicas en un BLOB, utilice los comandos LIST TO BLOB y BLOB to list.
  • si pasa un objeto C_OBJECT en el parámetro variable, el comando lo ubica en el BLOB como JSON en UTF-8. Si el objeto contiene punteros, los valores no referenciados se guardan en el BLOB, no los punteros mismos.

Sin embargo, si almacena una variable de tipo Entero largo que es una referencia a una lista jerárquica (ListRef), VARIABLE TO BLOB almacenará la variable Entero largo, no la lista. Para guardar y recuperar las listas jerárquicas en un BLOB, utilice los comandos LIST TO BLOB y BLOB to list.

Advertencia: Si utiliza un BLOB para almacenar las variables, debe utilizar posteriormente el comando BLOB TO VARIABLE para recuperar el contenido del BLOB, porque las variables son almacenadas en BLOBs utilizando un formato interno de 4D.

Después del llamar al comando, si la variable ha sido almacenada con éxito, la variable OK toma el valor 1. Si la operación no se pudo realizar, la variable OK toma el valor 0; por ejemplo, por falta de memoria.

Nota sobre la independencia de la plataforma: VARIABLE TO BLOB y BLOB TO VARIABLE utilizan un formato interno de 4D para administrar las variables almacenadas en los BLOBs. La ventaja es que usted no tiene que preocuparse por la conversión de bytes (byte swapping) entre plataformas mientras utiliza estos dos comandos. En otras palabras, un BLOB creado en Windows utilizando cualquiera de estos dos comandos puede ser reutilizado en Macintosh y viceversa.

Los siguientes métodos de proyecto le permiten almacenar y recuperar rápidamente las arrays en los documentos en disco:

  ` Método de proyecto GUARDAR ARRAY
  ` GUARDAR ARRAY ( Alfa; Puntero )
  ` GUARDAR ARRAY ( Documento ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayDatos)
 VARIABLE TO BLOB($2->;$vxArrayDatos` Almacenar el array en el BLOB
 COMPRESS BLOB($vxArrayDatos` Comprimir el BLOB
 BLOB TO DOCUMENT($1;$vxArrayDatos` Guardar el BLOB en disco
 
  ` Método de proyecto CARGAR ARRAY
  ` CARGAR ARRAY ( Alfa ; Puntero )
  ` CARGAR ARRAY ( Documento ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayDatos)
 DOCUMENT TO BLOB($1;$vxArrayDatos` Cargar el BLOB del disco
 EXPAND BLOB($vxArrayDatos` Descomprimir el BLOB
 BLOB TO VARIABLE($vxArrayDatos;$2->) ` Recuperar el array del BLOB

Después de añadir estos métodos a su aplicación, puede escribir:

 ARRAY STRING(...;comoTodoArray;...)
  ` ...
 GUARDAR ARRAY($vsDocNombre;->comoTodoArray)
  ` ...
 CARGAR ARRAY($vsDocNombre;->comoTodoArray)

Los dos métodos de proyecto siguientes permiten almacenar y recuperar rápidamente las variables en un BLOB:

  ` Método de proyecto GUARDAR VARIABLES EN BLOB
  ` GUARDAR VARIABLES EN BLOB ( Puntero{ ; Puntero... { ; Puntero} } )
  ` GUARDAR VARIABLES EN 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
 
 
  ` Método de proyecto RECUPERAR VARIABLES DEL BLOB
  ` RECUPERAR VARIABLES DEL BLOB ( Puntero{ ; Puntero... { ; Puntero} } )
  ` RECUPERAR VARIABLES DEL 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

Después de escribir estos métodos en su aplicación, puede escribir:

 GUARDAR VARIABLES EN BLOB(->vxBLOB;->vgImagen;->comoUnArray;->alOtroArray)
  ` ...
 RECUPERAR VARIABLES DEL BLOB(->vxBLOB;->vgImagen;->comoUnArray;->alOtroArray)

La variable OK toma el valor 1 si la variable ha sido almacenada correctamente, de lo contrario toma el valor 0.



Ver también 

BLOB to list
BLOB TO VARIABLE
LIST TO BLOB

 
PROPIEDADES 

Producto: 4D
Tema: BLOB
Número 532

Este comando modifica la variable sistema OKThis command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v6
Modificado: 4D v14

 
PALABRAS CLAVES 

ListRef, Variable

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)