version 6.0
BLOB vers texte (blob; formatTexte{; offset{; longueurTexte}}) Chaîne
Paramètre | Type | Description | |
blob | BLOB | BLOB duquel extraire la valeur de type Texte | |
formatTexte | Numérique | 0 Chaîne en C | |
1 Chaîne pascal | |||
2 Texte avec longueur | |||
3 Texte sans longueur | |||
offset | Variable | Offset (en octets) dans le BLOB | |
Nouvel offset après la lecture | |||
longueurTexte | Numérique | Nombre de caractères à lire | |
Résultat | Chaîne | Valeur de type Texte |
Description
La fonction BLOB vers texte retourne une valeur de type Texte lue dans le BLOB blob.
Le paramètre formatTexte définit le format interne de la valeur de type Texte à écrire. Vous passez une des constantes fournies par 4e Dimension :
Constante | Type | Valeur |
Chaîne en C | Entier long | 0 |
Chaîne pascal | Entier long | 1 |
Texte avec longueur | Entier long | 2 |
Texte sans longueur | Entier long | 3 |
Le tableau suivant décrit chacun de ces formats :
Format texte | Description & Exemples |
Chaîne en C | Le texte se termine par un caractère NULL (code ASCII $00). |
"" $00 | |
"Hello World!" $48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 | |
Chaîne pascal | Le texte est précédé d'un octet de longueur. |
"" $00 | |
"Hello World!" $0C 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 | |
Texte avec longueur | Le texte est précédé de 2 octets de longueur. |
"" $00 00 | |
"Hello World!" $00 0C 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 | |
Texte sans longueur | Le texte est composé seulement de ses caractères. |
"" Pas de valeurs | |
"Hello World!" $48 65 6C 6C 6F 20 57 6F 72 6C 64 21 |
ATTENTION : Le nombre de caractères à lire est déterminé par le paramètre formatTexte, SAUF dans le cas du dernier format, Texte sans longueur, pour lequel vous devez spécifier le nombre de caractères à lire dans le paramètre longueurTexte. Pour les autres formats, longueurTexte est ignoré et vous pouvez l'omettre.
Notez bien que les variables de type Texte peuvent contenir jusqu'à 32 000 caractères et que les variables de type Alpha peuvent contenir un nombre de caractères fixe, défini lors de leur déclaration (255 caractères maximum). Si vous tentez de lire plus de valeurs que la variable ne peut en contenir, 4D tronque le résultat de la commande.
Si vous ne passez pas de variable dans le paramètre optionnel offset, les premiers octets de BLOB sont lus, en fonction de la valeur passée dans formatTexte. Notez que vous devez passer une variable dans le paramètre offset lorsque vous lisez une valeur de type Texte sans longueur.
Si vous passez une variable dans le paramètre optionnel offset, la valeur de type Texte est lue depuis l'offset exprimé en octets (à partir de zéro) du BLOB.
Note : Vous devez passer un offset compris entre 0 (zéro) et la taille du BLOB moins la taille du texte à extraire. Sinon, le résultat de la fonction ne sera pas exploitable.
Exemple
L'exemple suivant lit une ressource type Mac OS imaginaire dont le format interne est identique à celui des ressources 'STR#' :
LIRE RESSOURCE ("ABCD";viRéfRes;vxDonnéesRes;viMonFichierRes) vlTaille:=Taille BLOB(vxDonnéesRes) Si (vlTaille>0) ` La ressource commence par un entier sur 2 octets qui spécifie le nombre de chaînes vlOffset:=0 viNbSaisies:=BLOB vers entier(vxDonnéesRes;Ordre octets Macintosh;vlOffset) ` Ensuite la ressource contient des chaînes Pascal concaténées sans octet de réalignement Boucle (viSaisie;1;viNbSaisies) Si (vlOffset<vlTaille) vaSaisie:=BLOB vers texte(vxDonnéesRes;Chaîne pascal;vlOffset) ` Faire quelque chose avec vaSaisie Sinon ` Les données de la ressource sont invalides, sortir de la boucle viSaisie:=viNbSaisies+1 Fin de si Fin de boucle Fin de si
Référence
BLOB vers entier, BLOB vers entier long, BLOB vers reel, ENTIER LONG VERS BLOB, ENTIER VERS BLOB, REEL VERS BLOB, TEXTE VERS BLOB.