4D prend en charge les données de type BLOB (Binary Large OBjects).
Vous pouvez définir des champs de type BLOB, des variables de type BLOB et des tableaux de type BLOB :
- Pour créer un champ de type BLOB, sélectionnez BLOB dans la liste déroulante Type de champ dans la fenêtre des Propriétés de champ.
- Pour créer une variable de type BLOB, utilisez la directive de compilation C_BLOB. Vous pouvez créer des variables BLOB locales, process et interprocess.
- Pour créer un tableau de type BLOB, utilisez la commande TABLEAU BLOB.
Dans 4D, un BLOB est une série contiguë d'octets de longueur variable qui peut être traitée comme un seul objet ou dont les octets peuvent être adressés individuellement. Un BLOB peut être vide (longueur nulle) ou contenir jusqu'à 2147483647 octets (2 Go).
Lorsque vous travaillez avec un BLOB, il est stocké entièrement en mémoire. Si vous travaillez avec une variable ou un tableau, le BLOB n'existe qu'en mémoire. Si vous travaillez avec un champ de type BLOB, il est chargé en mémoire à partir du disque, comme le reste de l'enregistrement auquel il appartient.
A l'instar des autres types de champs pouvant contenir une grande quantité de données (comme les champs de type Image), les champs de type BLOB ne sont pas dupliqués en mémoire lorsque vous modifiez un enregistrement. Par conséquent, les résultats renvoyés par Ancien et Modifie ne sont pas significatifs lorsque ces fonctions sont appliquées à des champs de type BLOB.
Comme un BLOB peut contenir n'importe quel type de données, il n'existe pas de mode de représentation à l'écran par défaut des BLOBs. Si vous affichez un champ ou une variable de type BLOB dans un formulaire, l'objet sera toujours vide, quel que soit son contenu.
Vous pouvez utiliser des champs de type BLOB pour stocker tout type de données dont la taille est inférieure ou égale à 2 Giga-octets. Vous ne pouvez pas indexer un champ de type BLOB. Si vous voulez rechercher des enregistrements à partir d'une valeur contenue dans un champ BLOB, il sera nécessaire d'écrire une formule.
Les BLOBs dans 4D peuvent être passés comme paramètres aux commandes 4D ou aux routines des plug-ins qui attendent un paramètre de type BLOB. Les BLOBs peuvent également être passés aux méthodes que vous créez ou être retournés comme un résultats de fonctions. Pour passer un BLOB à une de vos méthodes, vous pouvez aussi définir un pointeur vers le BLOB et passer le pointeur comme paramètre. Voici quelques exemples :
C_BLOB(touteVarBLOB)
FIXER TAILLE BLOB(touteVarBLOB;1024*1024)
$CodeErr:=Faites_Quelque_chose_avec_ce_BLOB(touteVarBLOB)
C_BLOB(recupBlob)
recupBlob:=Remplir_Blob(touteVarBLOB)
REMPLIR BLOB AVEC DES ZEROS(->touteVarBLOB)
Note pour les développeurs de plug ins 4D : Un paramètre de type BLOB se déclare “&O” (la lettre “O” et non le chiffre “0”).
Vous pouvez affecter la valeur d'un BLOB à d'autres BLOBs, comme dans l'exemple suivant :
C_BLOB(vBlobA;vBlobB)
FIXER TAILLE BLOB(vBlobA;10*1024)
vBlobB:=vBlobA
En revanche, il n'existe pas d'opérateur pouvant être utilisé avec des BLOBs ; il n'existe pas d'expression de type BLOB.
Chaque octet d'un BLOB peut être adressé individuellement, à l'aide des accolades {...}. Dans un BLOB, les octets sont numérotés de 0 à N-1, N étant la taille du BLOB. Voici un exemple :
C_BLOB(vBlob)
FIXER TAILLE BLOB(vBlob;256)
Boucle(vOctet;0;Taille BLOB(vBlob)-1)
vBlob{vOctet}:=0
Fin de boucle
Comme vous pouvez adresser individuellement tous les octets d'un BLOB, vous pouvez littéralement stocker tout ce que vous voulez dans une variable ou un champ de type BLOB.
4D fournit les routines suivantes pour travailler avec les BLOBs :
- FIXER TAILLE BLOB redimensionne la taille d'un champ ou d'une variable de type BLOB.
- Taille BLOB retourne la taille d'un champ ou d'une variable de type BLOB.
- DOCUMENT VERS BLOB et BLOB VERS DOCUMENT vous permettent de charger et d'écrire un document entier dans un champ ou une variable de type BLOB et inversement (en option, les data forks et les resource forks sur Macintosh).
- VARIABLE VERS BLOB et BLOB VERS VARIABLE, ainsi que LISTE VERS BLOB et BLOB vers liste vous permettent de stocker et de charger des variables 4D dans des BLOBs.
- COMPRESSER BLOB, DECOMPRESSER BLOB et LIRE PROPRIETES BLOB vous permettent de travailler avec des BLOBs compressés.
- Les commandes BLOB vers entier, BLOB vers entier long, BLOB vers reel, BLOB vers texte, ENTIER VERS BLOB, ENTIER LONG VERS BLOB, REEL VERS BLOB et TEXTE VERS BLOB vous permettent de manipuler et de structurer les données en provenance du disque, des ressources, du système d'exploitation, etc.
- SUPPRIMER DANS BLOB, INSERER DANS BLOB et COPIER BLOB permettent de gérer les gros volumes de données à l'intérieur des BLOBs.
- CRYPTER BLOB et DECRYPTER BLOB permettent de crypter et de décrypter des données dans vos bases 4D.
Ces commandes sont décrites dans ce chapitre. De plus, vous disposez des routines suivantes :