Manuel §1.6.95    

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).