4D v16.3

VARIABLE TO BLOB

Página Inicial

 
4D v16.3
VARIABLE TO BLOB

VARIABLE TO BLOB 


 

VARIABLE TO BLOB ( variável ; BLOB {; offset | *} ) 
Parâmetro Tipo   Descrição
variável  Variável in Variável a ser armazenada no BLOB
BLOB  BLOB in BLOB a receber a variável
offset | *  Variável, Operador in Offset da variável(expressado em bytes) no BLOB ou * para adicionar o valor
in Novo offset depois de escrita se * for omitido

O comando VARIABLE TO BLOB  armazena a variável no BLOB blob.

Se você especificar o parâmetro opcional *, a variável é acrescentada ao BLOB e o tamanho do BLOB é aumentado em conformidade. Usando o parâmetro opcional *, você pode armazenar qualquer número de variáveis ou listas (ver outros comandos BLOB) em um BLOB, enquanto o BLOB couber na memória.

Se você não especificar o parâmetro opcional * ou o parâmetro de deslocamento variável, a variável é armazenada no início do BLOB, substituindo o conteúdo anterior, o tamanho do BLOB é ajustado em conformidade.

Se você passar o parâmetro de deslocamento variável, a variável é escrita no offset (a partir do zero) dentro do BLOB. Não importa onde você escreva a variável, o tamanho do BLOB é aumentado de acordo com o local que você passou (mais o tamanho da variável, se necessário). Bytes recém-alocados, com exceção do que você está escrevendo, são inicializados em zero.

Após a chamada, o parâmetro variável offset é devolvido, incrementado pelo número de bytes que foram escritos. Portanto, você pode reutilizar a mesma variável com outro comando de escrita BLOB para escrever uma outra variável ou lista.

VARIABLE TO BLOB  aceita qualquer tipo de variável (incluindo outros BLOBs), exceto os seguintes:

  • Ponteiros
  • Array de ponteiros

Note que:

  • Se guardar uma variável de tipo Inteiro longo que é uma referência a uma lista hierárquica (ListRef), VARIABLE TO BLOB guardará a variável Inteiro longo, não a lista. Para guardar e recuperar as listas hierárquicas em um BLOB, utilize os comandos LIST TO BLOB e BLOB to list.
  • Se passar um objeto C_OBJECT no parâmetro variavel, o comando o localiza no BLOB como JSON em UTF-8. Se o objeto contém ponteiros, os valores não referenciados são guardados no BLOB, não os ponteiros mesmos.

No entanto, se você armazenar uma variável Inteiro Longo que é uma referência a uma lista hierárquica (ListRef), VARIABLE TO BLOB irá armazenar a variável Inteiro Longo, não a lista. Para armazenar e recuperar listas hierárquicas dentro e de um BLOB, use os comandos LIST TO BLOB e BLOB to list.

ATENÇÃO: Se você usar um BLOB para armazenar as variáveis, você deve usar mais tarde o comando BLOB TO VARIABLE para reler o conteúdo do BLOB, pois as variáveis são armazenadas em BLOBs usando um formato interno de 4D.

Após a chamada, se a variável foi armazenada com sucesso, a variável OK é definida como 1. Se a operação não pôde ser executada, a variável OK é definida como 0, por exemplo, não havia memória suficiente.

Nota sobre a independência de plataforma: VARIABLE TO BLOB e BLOB TO VARIABLE usam um formato interno de 4D para lidar com variáveis armazenadas em BLOBs. Como benefício, você não precisa se preocupar com a troca de bytes entre as plataformas ao usar esses dois comandos. Em outras palavras, um BLOB criado no Windows usando um desses comandos podem ser reutilizados em Macintosh, e vice-versa.

Os dois métodos de projeto a seguir permitem armazenar e recuperar rapidamente arrays e documentos em disco:

  ` Método de proyecto GUARDAR ARRAY
  ` GUARDAR ARRAY ( Alfa; Ponteiro )
  ` GUARDAR ARRAY ( Documento ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayDados)
 VARIABLE TO BLOB($2->;$vxArrayDados` Armazenar o array no BLOB
 COMPRESS BLOB($vxArrayDados` Comprimir o BLOB
 BLOB TO DOCUMENT($1;$vxArrayDados` Salvar o BLOB no disco
 
  ` Método de projeto CARGAR ARRAY
  ` CARGAR ARRAY ( Alfa ; Ponteiro )
  ` CARGAR ARRAY ( Documento ; -> Array )
 C_STRING(255;$1)
 C_POINTER($2)
 C_BLOB($vxArrayDados)
 DOCUMENT TO BLOB($1;$vxArrayDados` Carregar o BLOB do disco
 EXPAND BLOB($vxArrayDados` Descomprimir o BLOB
 BLOB TO VARIABLE($vxArrayDados;$2->) ` Recuperar o array do BLOB

Depois que estes métodos foram adicionados ao seu aplicativo, você pode escrever:

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

Os dois métodos de projeto a seguir permitem armazenar e recuperar rapidamente qualquer conjunto de variáveis de/para um BLOB:

  ` Método de projeto GUARDAR VARIABLES EN BLOB
  ` GUARDAR VARIABLES EN BLOB ( Ponteiro{ ; Ponteiro... { ; Ponteiro} } )
  ` 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 projeto RECUPERAR VARIAVEIS DO BLOB
  ` RECUPERAR VARIAVEIS DO BLOB ( Ponteiro{ ; Ponteiro... { ; Ponteiro} } )
  ` RECUPERAR VARIAVEIS DO 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

Depois que estes métodos foram adicionados ao seu aplicativo, você pode escrever:

 GUARDAR VARIABLES EN BLOB(->vxBLOB;->vgImagem;->comoUmArray;->aoOutroArray)
  ` ...
 RECUPERAR VARIABLES DEL BLOB(->vxBLOB;->vgImagem;->comoUmArray;->aoOutroArray)

A variável OK é definida como 1 se a variável foi armazenada com sucesso, caso contrário, ela é definido como 0.



Ver também 

BLOB to list
BLOB TO VARIABLE
LIST TO BLOB

 
PROPRIEDADES 

Produto: 4D
Tema: BLOB
Número 532

Este comando modifica a variável sistema OKThis command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v6
Modificado: 4D v14

 
PALAVRAS CHAVES 

ListRef, Variable

 
ARTICLE USAGE

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