Fonction SetBlob
La fonction SetBlob [1] permet de forcer le type d'une variable en Blob et de lui allouer une zone de données binaires.
SetBlob( Variable, Longueur {, Boutisme = 0})
La fonction attend en paramètre une variable et une longueur de zone à allouer. Le boutisme [2] permet de préciser si la zone est encodée en boutisme locale (0), en gros-boutiste ( « Big endian » 68000, SPARC) (1) ou petit-boutiste ( « little endian » x86) (2) ; en fonction de ce boutisme les fonctions GetBlob et PutBlob adaptent leurs traitements.
La fonction rend 1 si l'opération a pu s'effectuer.
Cette fonction est particulièrement utile lorsque l'on dialogue avec des Dlls externes (cfr.DLL); par exemple:
Declare Function CamGet Lib “Camera.dll” ( &String, &Integer); Var Photo; Adresse; Longueur;
...
On ... do begin // Obtention de l'adresse et de la longueur de la zone // dans laquelle est enregistrée la photo de la camèra CamGet( Adresse, Longueur); // Association à la variable Photo SetBlob( Photo, Longueur); CopyBlob( Photo, Adresse, Longueur); end
La modification d'une variable en blob implique des allocations internes à Sisal avec recopie des données passées en paramètre; lors d'une affectation d'une variable par une variable Blob il y a aussi allocation de mémoire et recopie; de même lors du passage en paramètre par valeur à une fonction il y a recopie, c'est pour cette raison qu'il est conseillé de passer par adresse les variables nécessitant des allocations mémoires.
[1] A partir de la version 2.7
[2] Implémentation à venir, seul le boutisme par défaut est opérationne (juin 2016).