Aller au contenu principal
Version: Next

BLOB PROPERTIES

BLOB PROPERTIES ( blob ; compressé {; tailleDécompressée {; tailleCourante}} )

ParamètreTypeDescription
blobBlobBLOB sur lequel vous voulez obtenir des informations
compresséInteger0 = pas de compression, 1 = interne compact, 2 = interne rapide, -1 = GZIP compact, -2 = GZIP rapide
tailleDécompresséeIntegerTaille du BLOB décompressé en octets
tailleCouranteIntegerTaille courante du BLOB en octets

Description

BLOB PROPERTIES retourne des informations sur le BLOB blob.

Le paramètre compressé retourne une valeur indiquant si et comment le BLOB est compressé. Vous pouvez comparer cette valeur aux constantes suivantes, placées dans le thème BLOB :

ConstanteTypeValeurComment
Compact compression modeEntier long1Compression interne la plus compacte (au détriment de la vitesse à laquelle la compression et la décompression sont effectuées). Méthode par défaut.
Fast compression modeEntier long2Compression/décompression interne la plus rapide au détriment du taux de compression (une fois compressé, le BLOB prend plus de place)
GZIP best compression modeEntier long-1Compression GZIP la plus compacte (au détriment de la vitesse à laquelle la compression et la décompression sont effectuées)
GZIP fast compression modeEntier long-2Compression/décompression GZIP la plus rapide (au détriment du taux de compression)
Is not compressedEntier long0Pas de compression

Quel que soit l'état de compression du BLOB, le paramètre tailleDécompressée retourne la taille du BLOB non compressé.

Le paramètre tailleCourante retourne la taille courante du BLOB. Si le BLOB est compressé, tailleCourante sera inférieur à tailleDécompressée. Si le BLOB n'est pas compressé, tailleCourante sera égal à tailleDécompressée.

Exemple 1

Référez-vous aux exemples des commandes COMPRESS BLOB et EXPAND BLOB.

Exemple 2

Lorsqu'un BLOB est compressé, la méthode projet suivante vous permet de connaître le taux de place gagnée en compressant le BLOB :

  // Méthode projet Place gagnée par compression
  // Place gagnée par compression (Pointeur {; Pointeur } ) -> Entier long
  // Place gagnée par compression ( -> BLOB {; -> octetsGagnés } ) -> Pourcentage
 
 var $1;$2 : Pointer
 var $0;$vlCompressé;$vlTailleDécompressée;$vlTailleCourante : Integer
 
 BLOB PROPERTIES($1->;$vlCompressé;$vlTailleDécompressée;$vlTailleCourante)
 If($vlTailleDécompressée=0)
    $0:=0
    If(Count parameters>=2)
       $2->:=0
    End if
 Else
    $0:=100-(($vlTailleCourante/$vlTailleDécompressée)*100)
    If(Count parameters>=2)
       $2->:=$vlTailleDécompressée-$vlTailleCourante
    End if
 End if

Lorsque cette méthode est placée dans votre application, vous pouvez écrire :

  // ...
 COMPRESS BLOB(vxBlob)
 $vlPourcent:=Place gagnée par compression(->vxBlob;->vlTailleBlob)
 ALERT("La compression permet de gagner "+String(vlTailleBlob)+" octets, donc "+Chaine($vlPourcent;"#0%")+" d'espace.")

Voir aussi

COMPRESS BLOB
EXPAND BLOB