4D v16.3

VARIABLE VERS BLOB

Accueil

 
4D v16.3
VARIABLE VERS BLOB

VARIABLE VERS BLOB 


 

VARIABLE VERS BLOB ( variable ; blob {; offset | *} ) 
Paramètre Type   Description
variable  Variable in Variable à stocker dans le BLOB
blob  BLOB in BLOB devant recevoir la variable
offset | *  Variable, Opérateur in Offset de la variable (en octets) dans BLOB ou * pour ajouter la variable à la fin du BLOB
in Nouvel offset après écriture si * omis

VARIABLE VERS BLOB stocke la variable variable dans le BLOB blob.

Si vous passez le paramètre optionnel *, la variable est ajoutée à la fin de blob et la taille du BLOB est redimensionnée en conséquence. A l'aide du paramètre optionnel *, vous pouvez stocker les unes derrière les autres autant de variables ou de listes (cf. les autres commandes BLOB) que vous voulez dans un BLOB, la seule limite étant celle de la mémoire disponible.

Si vous ne passez pas le paramètre optionnel * ni de variable dans le paramètre offset, variable est stockée à partir du début du BLOB en écrasant son contenu précédent. La taille du BLOB est redimensionnée en conséquence.

Si vous passez la variable offset en paramètre, la variable est écrite dans le BLOB à l'offset (à partir de zéro) spécifié par offset. Quel que soit l'endroit où vous placez la variable, la taille du BLOB sera augmentée si nécessaire en fonction de l'emplacement que vous avez défini (ainsi que de la taille de la variable). Les octets redéfinis (autres que ceux que vous venez d'écrire) sont initialisés à la valeur zéro.

Après l'exécution de la commande, la variable du paramètre offset est incrémentée du nombre d'octets ayant été écrits. Vous pouvez par conséquent réutiliser la même variable avec une autre commande d'écriture de BLOB afin de placer une autre variable ou liste juste après celle que vous venez d'écrire.

VARIABLE VERS BLOB accepte tous les types de variables (y compris d'autres BLOBs), à l'exception des types suivants :

  • Pointeurs
  • Tableaux de pointeurs

A noter que :

  • si vous stockez une variable de type Entier long qui est une référence à une liste hiérarchique (ListRef), VARIABLE VERS BLOB stockera la variable Entier long, pas la liste. Pour stocker et récupérer des listes hiérarchiques dans un BLOB, utilisez les commandes LISTE VERS BLOB et BLOB vers liste.
  • si vous passez dans le paramètre variable un objet C_OBJET, la commande le place dans le BLOB sous la forme JSON en utf-8. Si l’objet contient des pointeurs, leur valeurs dépointées sont stockées dans le BLOB, pas les pointeurs eux-mêmes.

ATTENTION : Si vous utilisez un BLOB pour stocker les variables, utilisez par la suite la commande BLOB VERS VARIABLE pour récupérer le contenu du BLOB car les variables sont stockées dans les BLOBs avec un format interne à 4D.

La variable OK prend la valeur 1 si la variable a été correctement stockée. Si l'opération n'a pas pu être effectuée à cause d'un manque de mémoire, la variable OK prend la valeur 0.

Note sur l'indépendance de plate-forme : VARIABLE VERS BLOB et BLOB VERS VARIABLE utilisent un format interne à 4D pour gérer les variables stockées dans les BLOBs. Vous n'avez donc pas besoin de vous préoccuper de la conversion des octets ("byte swapping") entre les différentes plates-formes lors de l'utilisation de ces deux commandes. Un BLOB créé sous Windows à l'aide de ces deux commandes peut être réutilisé sans la moindre manipulation sous Mac OS et vice-versa.

Les méthodes projet suivantes vous permettent de stocker et de récupérer rapidement des variables dans les documents sur disque :

  ` Méthode projet STOCKER VARIABLES
  ` STOCKER VARIABLES ( Alpha ; Pointeur )
  ` STOCKER VARIABLES ( Document ; -> Tableau )
 C_ALPHA(255;$1)
 C_POINTEUR($2)
 C_BLOB($vxDonnéesTableau)
 VARIABLE VERS BLOB($2->;$vxDonnéesTableau` Stocker le tableau dans le BLOB
 COMPRESSER BLOB($vxDonnéesTableau` Compresser le BLOB
 BLOB VERS DOCUMENT($1;$vxDonnéesTableau` Enregistrer le BLOB sur disque
 
  ` Méthode projet CHARGER VARIABLES
  ` CHARGER VARIABLES ( Alpha ; Pointeur )
  ` CHARGER VARIABLES ( Document ; -> Tableau )
 C_ALPHA(255;$1)
 C_POINTEUR($2)
 C_BLOB($vxDonnéesTableau)
 DOCUMENT VERS BLOB($1;$vxDonnéesTableau` Charger le BLOB du disque
 DECOMPRESSER BLOB($vxDonnéesTableau` Décompresser le BLOB
 BLOB VERS VARIABLE($vxDonnéesTableau;$2->) ` Récupérer le tableau du BLOB

Lorsque ces méthodes ont été ajoutées à votre application, vous pouvez écrire :

 TABLEAU ALPHA(...;taToutTableau;...)
  ` ...
 STOCKER VARIABLES($vaNomDoc;->taToutTableau)
  ` ...
 CHARGER VARIABLES($vaNomDoc;->taToutTableau)

Les deux méthodes projet suivantes vous permettent de stocker et de récupérer des variables dans un BLOB :

  ` Méthode projet STOCKER VARIABLES DANS BLOB
  ` STOCKER VARIABLES DANS BLOB ( Pointeur { ; Pointeur ... { ; Pointeur } } )
  ` STOCKER VARIABLES DANS BLOB ( BLOB { ; Var1 ... { ; Var2 } } )
 C_POINTEUR(${1})
 C_ENTIER LONG($vlParam)
 
 FIXER TAILLE BLOB($1->;0)
 Boucle($vlParam;2;Nombre de paramètres)
    VARIABLE VERS BLOB(${$vlParam}->;$1->;*)
 Fin de boucle
 
 
  ` Méthode projet RECUPERER VARIABLES DANS BLOB
  ` RECUPERER VARIABLES DANS BLOB ( Pointeur { ; Pointeur ... { ; Pointeur } } )
  ` RECUPERER VARIABLES DANS BLOB ( BLOB { ; Var1 ... { ; Var2 } } )
 C_POINTEUR(${1})
 C_ENTIER LONG($vlParam;$vlOffset)
 
 $vlOffset:=0
 Boucle($vlParam;2;Nombre de paramètres)
    BLOB VERS VARIABLE($1->;${$vlParam}->;$vlOffset)
 Fin de boucle

Lorsque ces méthodes ont été ajoutées à votre application, vous pouvez écrire :

 STOCKER VARIABLES DANS BLOB(->vxBLOB;->vgImage;->taTableau1;->taTableau2)
  ` ...
 RECUPERER VARIABLES DANS BLOB(->vxBLOB;->vgImage;->taTableau1;->taTableau2)

La variable OK prend la valeur 1 si la variable a été correctement stockée, sinon elle prend la valeur 0.



Voir aussi  

BLOB vers liste
BLOB VERS VARIABLE
LISTE VERS BLOB

 
PROPRIÉTÉS 

Produit : 4D
Thème : BLOB
Numéro : 532
Nom intl. : VARIABLE TO BLOB

Cette commande modifie la variable système OKCommande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

Créé : 4D v6
Modifié : 4D v14

 
MOTS-CLÉS 

ListRef, Variable

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)