version 2004 (Modifiée)
Définition
4e Dimension prend en charge les données de type BLOB (Binary Large OBjects).
Vous pouvez définir des champs de type BLOB et des variables 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.
Note : Les tableaux ne peuvent avoir le type BLOB.
Dans 4e Dimension, 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).
Les BLOBs et la mémoire
Lorsque vous travaillez avec un BLOB, il est stocké entièrement en mémoire. Si vous travaillez avec une variable de type BLOB, elle 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 et Sous-table), 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.
Afficher des BLOBs
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.
Champs de type BLOB
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.
Passage des paramètres, pointeurs et résultats de fonctions
Les BLOBs dans 4e Dimension 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 :
` Déclarer une variable de type BLOB C_BLOB (touteVarBLOB) ` Le BLOB est passé comme paramètre à une commande 4D FIXER TAILLE BLOB (touteVarBLOB;1024*1024) ` Le BLOB est passé comme paramètre à une routine externe $CodeErr:= Faites_Quelque_chose_avec_ce_BLOB (touteVarBLOB) ` Le BLOB est passé comme paramètre à une méthode qui retourne un BLOB C_BLOB (recupBlob) recupBlob:=Remplir_Blob (touteVarBLOB) ` Un pointeur vers le BLOB est passé comme paramètre à une de vos méthodes 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").
Affectation
Vous pouvez affecter la valeur d'un BLOB à d'autres BLOBs, comme dans l'exemple suivant :
` Déclarer deux variables de type BLOB C_BLOB (vBlobA;vBlobB) ` Fixer la taille du premier BLOB à 10Ko FIXER TAILLE BLOB (vBlobA;10*1024) ` Affectez le premier BLOB au second 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.
Adresser le contenu d'un 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 :
` Déclarer une variable de type BLOB C_BLOB (vBlob) ` Fixer la taille du BLOB à 256 octets FIXER TAILLE BLOB (vBlob;256) ` La boucle suivante initialise les 256 octets du BLOB à zéro 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.
Routines 4e Dimension pour manipuler les BLOBs
4e Dimension 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 :
C_BLOB déclare une variable de type BLOB (reportez-vous à la section Commandes du thème Compilateur).
LIRE PRESSE PAPIERS et AJOUTER A PRESSE PAPIERS vous permettent de gérer tout type de données stockées dans le presse-papiers (référez-vous à la section Commandes du thème Presse-papiers).
LIRE RESSOURCE et ECRIRE RESSOURCE vous permettent de gérer tout type de données stockées dans une ressource qui se trouve sur disque (référez-vous à la section Ressources).
ENVOYER BLOB HTML vous permet d'envoyer tout type de données à un navigateur Web. Cette commande est incluse dans le thème Serveur Web.
IMAGE VERS BLOB, BLOB VERS IMAGE et IMAGE VERS GIF vous permettent d'ouvrir et de convertir des images via des BLOBs. Ces commandes sont incluses dans le thème Images.
GENERER CLES CRYPTAGE et GENERER DEMANDE CERTIFICAT permettent d'exploiter le protocole SSL (Secured Socket Layer) pour crypter des données ou les connexions Web. Ces commandes sont incluses dans le thème Protocole sécurisé.