version 6.0
ECRIRE RESSOURCE (resType; resNum; resDonnées{; resFichier})
Paramètre | Type | Description | |
resType | Alpha | Type de ressource (4 caractères) | |
resNum | Numérique | Numéro de ressource | |
resDonnées | BLOB | Nouveau contenu de la ressource | |
resFichier | DocRef | Numéro de référence de fichier de ressources ou | |
Fichier de ressources courant si omis |
Description
La commande ECRIRE RESSOURCE crée ou réécrit la ressource dont vous avez passé le type et le numéro dans resType et resNum avec les données passées dans le BLOB resDonnées.
Important : Vous devez passer une chaîne de 4 caractères dans resType.
Si la ressource ne peut pas être écrite, la variable système OK prend la valeur 0 (zéro).
Si vous passez un numéro de référence de fichier de ressources valide dans resFichier, la ressource est ajoutée dans ce fichier. Si vous ne passez pas le paramètre resFichier, la ressource est ajoutée au premier des fichiers de la chaîne des fichiers de ressources (c'est-à-dire le dernier fichier de ressources ouvert).
Note : La taille d'une ressource peut atteindre plusieurs mega-octets.
Indépendance de plate-forme : Rappelez-vous que vous travaillez avec des ressources issues de Mac OS. Quelle que soit la plate-forme utilisée, les valeurs internes des ressources comme des entiers longs sont stockées avec l'ordre d'octets ("byte ordering") Mac OS. Sous Windows, pour les données des ressources standard (telles que les ressources listes de chaînes et les ressources images) l'ordre des octets est automatiquement inversé ("byte swapping") si nécessaire. D'un autre côté, si vous créez et utilisez vos propres structures internes de données, c'est à vous d'effectuer l'inversion d'octets des données lorsque vous les écrivez dans un BLOB (par exemple en passant Ordre octets Macintosh à une commande telle que ENTIER LONG VERS BLOB).
Exemple
Pendant une session 4D, vous conservez des préférences utilisateur dans des variables interprocess. Pour sauvegarder ces préférences d'une session sur l'autre, vous pouvez :
utiliser les commandes ECRIRE VARIABLES et LIRE VARIABLES pour stocker et récupérer les variables dans des documents de variables sur disque.
utiliser les commandes VARIABLE VERS BLOB, BLOB VERS DOCUMENT, DOCUMENT VERS BLOB et BLOB VERS VARIABLE pour stocker et récupérer les variables dans des documents BLOB sur disque.
utiliser les commandes VARIABLE VERS BLOB, ECRIRE RESSOURCE, LIRE RESSOURCE et BLOB VERS VARIABLE pour stocker et récupérer les variables dans des fichiers de ressources sur disque.
L'exemple suivant utilise la troisième possibilité.
Dans la Méthode base Sur fermeture, vous écrivez :
` Méthode base Sur fermeture Si (Tester chemin acces("DB_Prefs")#Est un document) $vhResFile:=Creer fichier ressources("DB_Prefs") Sinon $vhResFile:=Ouvrir fichier ressources("DB_Prefs") Fin de si Si (OK=1) VARIABLE VERS BLOB(<>vbAutoRepeat;$vxPrefData) VARIABLE VERS BLOB(<>vlCurTable;$vxPrefData;*) VARIABLE VERS BLOB(<>asDfltOption;$vxPrefData;*) ` et ainsi de suite... ECRIRE RESSOURCE("PREF";26500;$vxPrefData;$vhResFile) FERMER FICHIER RESSOURCES($vhResFile) Fin de si
Dans la Méthode base Sur ouverture, vous écrivez :
` Méthode base Sur ouverture C_BOOLEEN(<>vbAutoRepeat) C_ENTIER LONG(<>vlCurTable) $vbDone:=Faux $vhResFile:=Ouvrir fichier ressources("DB_Prefs") Si (OK=1) LIRE RESSOURCE("PREF";26500;$vxPrefData;$vhResFile) Si (OK=1) $vlOffset:=0 BLOB VERS VARIABLE($vxPrefData;<>vbAutoRepeat;$vlOffset) BLOB VERS VARIABLE($vxPrefData;<>vlCurTable;$vlOffset) BLOB VERS VARIABLE($vxPrefData;<>asDfltOption;$vlOffset) ` et ainsi de suite... $vbDone:=Vrai Fin de si FERMER FICHIER RESSOURCES($vhResFile) Fin de si Si(Non($vbDone)) <>vbAutoRepeat:=Faux <>vlCurTable:=0 TABLEAU ALPHA(127;<>asDfltOption;0) Fin de si
Référence
Commandes du thème BLOB, LIRE RESSOURCE.
Variables et ensembles système
Si la ressource est écrite, la variable système OK prend la valeur 1. Sinon, elle prend la valeur 0 (zéro).