4D v16

Blobs

Accueil

 
4D v16
Blobs

Blobs    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que :

Au début, on se pose toujours les questions suivantes :

  • À quoi peut me servir un Blob et dans quelles circonstances ?
  • Mettre des "informations" dedans c'est facile, mais comment et surtout dans quel ordre les ressortir ?

Répondons d’abord à la deuxième question :

Bien qu’on puisse accéder à n’importe quel octet du Blob, dans la plupart des traitements vous ferez du FIFO (First In First Out) c’est-à-dire que vous récupérerez le contenu du Blob dans l’ordre dans lequel vous l’avez rangé.
Pour faire un parallèle simple, prenez une étagère dans laquelle vous rangez des livres de gauche à droite. Vous commencez par ranger un petit livre à gauche puis un gros livre collé au premier puis encore un gros livre puis une photo puis un bibelot rapporté de vacances, etc. Lorsqu’il faut faire les poussières sur cette étagère, vous ne vous posez pas la question de savoir à combien de centimètres du bord gauche est rangé tel ou tel livre. Vous les prenez dans l’ordre et vous décalez votre regard et vos mains au fur et à mesure, en fonction de la taille du dernier objet enlevé.

Dans un Blob, c’est pareil.

Notamment parce que vous savez ce que vous rangez dans le Blob.

Si vous rangez :

  • un entier c’est 2 octets
  • un entier long, ce sera 4
  • une date 6 octets
  • ...
  • Pour un texte, vous indiquerez la manière dont vous voulez qu’il soit rangé et comment est indiquée la longueur du texte (chaîne C, chaîne Pascal, etc.).

À la relecture, vous reprendrez les informations dans le même ordre et les rangerez dans des variables adaptées au contenu attendu (typées correctement).

Donc la lecture du Blob se fera de manière cohérente.
Voici maintenant la réponse à la première question (à quoi peut servir un Blob ?). Vous pouvez les utiliser par exemple dans les cas suivants :

  • stockage de variables, liste hiérarchiques, tableaux
  • échange de documents entre le client et le serveur
  • protection de certaines données confidentielles dans un blob crypté
  • enregistrement des variables contenant des plugins
  • envoi d’images, textes ou documents vers un navigateur web
  • communication avec un web service

La commande VARIABLE VERS BLOB stocke les données dans un format interne 4D, c’est la raison pour laquelle l’espace requis est légèrement supérieur au volume brut de données. L’avantage de cette commande est qu’elle vous évite de gérer le Byte Swapping (position de l’octet de poids fort) en cas de travail multi plate-forme.

Lorsque vous remplissez un Blob, vous pouvez utiliser le caractère * à la place de la variable $PositionDansBlob que nous avons utilisée.

4D comprend avec ce paramètre qu’il doit stocker la variable à la fin du Blob et l’agrandir en conséquence.

Imaginons maintenant que dans votre base de données, vous ayez un certain nombre de paramètres dont il faut tenir compte pour chaque utilisateur (ou chaque site d’installation de votre application) :

  • l’écran de démarrage
  • la couleur des fonds d’écran
  • la police et la taille des caractères
  • ...
    Il s’agit en fait des préférences utilisateurs.

Pour les conserver, il existe plusieurs solutions (créer une table, un fichier texte, un fichier XML, etc.).

Dans notre cas, nous pouvons conserver ces préférences dans un Blob, lui-même stocké dans un fichier sur le disque.

Les commandes d’écriture et de lecture des BLOBs sont BLOB VERS DOCUMENT et DOCUMENT VERS BLOB.

Pour gagner de la place et/ou des temps de transfert, pensez également à compresser vos Blobs.

Attention, 4D ne compresse les BLOBs que si leur taille est supérieure à 255 octets.

Lors de la décompression de vos BLOBs, pensez à tester si le BLOB est compressé, sinon la tentative de décompression générera une erreur.

Bonjour,

dans cette vidéo nous allons apprendre à programmer les BLOBs, et voir leurs interactions  avec les variables.

Les BLOBs permettent de stocker et récupérer toutes sortes d’informations.

Nous allons prendre un cas simple de stockage de variables. Créons une méthode, nous allons :

  • valoriser trois variables d'entrée, 3 variables de sortie
  • Initialiser le Blob et la positon de lecture dans le blob
  • valoriser les variables
  • et transférer ces variables dans le blob

Le principe étant :

  • d'utiliser la commande VARIABLE VERS BLOB
  • d'indiquer la variable à traiter
  • le blob dans lequel la stocker
  • et la position à laquelle stocker la variable dans le blob

Il se trouve que cette variable PositionDansBlob sert à la fois d'entrée et de sortie, c'est-à-dire :

  • qu'elle indique avant le stockage de la variable à quel endroit on souhaite la stocker
  • et après que la commande ait été exécutée cette variable contient la position dans le blob juste après la variable de manière à pouvoir stocker les éléments suivants.
  • Une fois que les données ont été stockées dans le blob on peut faire tout une série de traitements puis ensuite extraire les données du BLOB en écrivant ceci
    on redéfinit le départ dans le blob à la positoin 0
    on va extraire du blob la première variable qui a été entrée
  • puis la 2è et la 3è
  • et en général après avoir utilisé un blob, on l'efface en fixant sa taille à 0

Nous allons tracer cette méthode pour voir comment se remplit le blob et comment il restitue les variables.

A ce niveau-là, :

  • toutes les initialisations ont été faites.
  • le blob est vide
  • lorsqu'on est passé sur le 1ère ligne le blob contient un certain nombre d'octets
  • et au fur-et-à-mesure il se remplit.

Pour extraire les données du Blob

  • on repart de la position 0 dans le blob
  • puis on extrait  la valeur entière
  • la date
  • et le texte qui avaient été stockés
  • et on vide le blob.

Ce petit exemple permet de comprendre l'entrée et la sortie des données dans un blob.

On pourrait envisager, à partir du tableau statistiques de stocker les résultats dans un blob de manière à les réutiliser ultérieurement.
On peut donc :

  • créer un blouton Blob
    (normalement il faut aller le mettre dans le fichier XLIFF)
  • et dans ce bouton on va créer un blob
  • et transférer les 2 tableaux.

ultérieurement lorsqu'on voudra récupérer le contenu des tableaux il faudra le programmer de cette manière :

  • Initialisation d'un tableau
  • de l'autre
  • positionnement dans le blob
  • récupération des 2 tableaux à partir du blob.

A l'exécution :

  • nos tableaux contiennent bien chacun 7 élements,
  • le blob est vide
  • on charge le blob avec les informations provenant des tableaux
puis lorsqu'on veut récupérer ultérieurement le contenu du bob
  • on part de 2 tableaux vides
  • on se positionne au début du blob
  • puis on recharge les tableaux (les techniciens puis les interventions)

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Blobs

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v16)