Ressources

4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant

version 2004 (Modifiée)


Qu'est-ce qu'une ressource ?

Une ressource regroupe des données de tout type, structurées dans un format défini, et stockées dans un fichier séparé ou dans la resource fork ("partie de ressources") d'un fichier Mac OS. Généralement, les ressources contiennent des chaînes de caractères, des images, des icônes, etc. En fait, vous pouvez créer et utiliser vos propres types de ressources et y stocker toutes les données que vous voulez.

Data fork, Resource fork et fichier de ressources

A l'origine, sur Macintosh, les données et les ressources étaient stockées dans le même fichier, constitué d'une data fork ("partie de données") et d'une resource fork ("partie de ressources"). La data fork d'un fichier Macintosh est l'équivalent d'un fichier Windows ou UNIX. La resource fork d'un fichier Macintosh contient les ressources spécifiques Mac OS du fichier et n'a pas d'équivalent direct sous Windows ou UNIX.

Bien que ce fonctionnement soit toujours pris en charge par 4e Dimension, désormais sous Mac OS comme sous Windows, les ressources sont stockées dans un fichier séparé (de type "data fork" sous Mac OS). Ce principe est géré de façon transparente par 4e Dimension et permet d'échanger les fichiers entre les différentes plates-formes sans qu'aucune conversion ne soit nécessaire. Par exemple, lorsque vous créez une nouvelle base de données, 4e Dimension crée un fichier suffixé .rsr afin de stocker les ressources du fichier de structure et un fichier .4dr pour les ressources du fichier de données.

Les commandes de gestion des fichiers de ressources (Creer fichier ressources et Ouvrir fichier ressources) permettent de travailler directement en data fork pour une meilleure compatibilité multi-plate-forme.

Fichiers de ressources


Quelle que soit la plate-forme que vous utilisez, le fichier de structure d'une base 4D n'est pas le seul type de fichier utilisant des ressources. L'application 4D elle-même fait appel à des ressources, stockées dans un fichier suffixé ".RSR".

Les plug-ins 4D, comme par exemple 4D Write, peuvent également utiliser des ressources.

Il en va de même pour le fichier de données d'une base 4D. Par exemple, vous pouvez verrouiller un fichier de données de manière à ce qu'il ne puisse être utilisé que par un fichier de structure particulier. Cette opération s'effectue dans les Préférences de l'application et se traduit par la création de la même ressource WEDD ("wedding" signifiant "mariage") dans les fichiers de ressources de la structure et des données (suffixés ".4DR").

En plus des fichiers de ressources fournis par 4D, vous pouvez créer et utiliser vos propres fichiers de ressources à l'aide des commandes 4D Creer fichier ressources et Ouvrir fichier ressources. Lorsque leur exécution s'est déroulée correctement, ces deux commandes retournent un numéro de référence de fichier de ressources identifiant de manière unique le fichier de ressources ouvert. Ce numéro équivaut au numéro de référence de document retourné, pour les fichiers standard, par les commandes du thème Documents système, telles que Ouvrir document. Toutes les commandes 4D de gestion des ressources acceptent un numéro de référence de fichier de ressources (facultatif). Une fois que vous en avez terminé avec un fichier de ressources, n'oubliez pas de le refermer en appelant la commande FERMER FICHIER RESSOURCES.

La chaîne des fichiers de ressources


Lorsque vous travaillez avec une base 4D, vous pouvez soit utiliser tous les fichiers de ressources ouverts soit un fichier de ressources particulier.

Plusieurs fichiers de ressources peuvent être ouverts simultanément. C'est d'ailleurs toujours le cas lorsqu'une base 4D est en cours d'utilisation :

Sur Macintosh, le fichier de ressources du système est ouvert.

Sous Windows, le fichier ASIPORT.RSR est ouvert (il contient une partie des ressources système du Macintosh).

Le fichier de ressources de l'application 4D est ouvert.

Le fichier de ressources de la structure de la base est ouvert.

Le fichier de ressources des données de la base est ouvert (s'il existe).

Enfin, vous pouvez ouvrir votre propre fichier de ressources à l'aide de la fonction Ouvrir fichier ressources.

Cette liste de ressources ouvertes s'appelle la chaîne des fichiers de ressources. Lorsque vous recherchez une ressource particulière, celle-ci peut être désignée de deux manières :

Si vous passez un numéro de référence de fichier de ressources à une commande 4D de gestion des ressources, la ressource est recherchée dans ce fichier uniquement.

Si vous ne passez pas de numéro de référence de fichier de ressources à la commande 4D, la ressource est recherchée dans tous les fichiers de ressources ouverts, depuis le plus récemment ouvert jusqu'au premier ouvert. 4D remonte en sens inverse la chaîne des fichiers de ressources ouverts : le dernier fichier ouvert est examiné en premier.

Voici un exemple :

   $vhResFile:=Creer fichier ressources("Simple_Fichier")
   Si (OK=1)
      TABLEAU ALPHA(63;asDesChaines;0)
      LISTE DE CHAINES VERS TABLEAU(8;asDesChaines;$vhResFile)
      ALERTE("Le tableau contient "+Chaine(Taille tableau(asDesChaines))+" élément(s).")
      LISTE DE CHAINES VERS TABLEAU(8;asDesChaines)
      ALERTE("Le tableau contient "+Chaine(Taille tableau(asDesChaines))+" élément(s).")
      FERMER FICHIER RESSOURCES($vhResFile)
   Fin de si 

Lors de l'exécution de cette méthode, la première alerte affiche "Le tableau contient 0 élément(s)" et la seconde alerte affiche "Le tableau contient 634 élément(s)".

Le premier appel :

      LISTE DE CHAINES VERS TABLEAU(8;asDesChaines;$vhResFile)

recherche la ressource "STR#" ID=8 uniquement dans le fichier de ressources qui vient d'être créé et ouvert par la commande Creer fichier ressources. Comme ce fichier est neuf et donc vide, la recherche ne donne rien.

Le second appel :

      LISTE DE CHAINES VERS TABLEAU(8;asDesChaines)

recherche la ressource "STR#" ID=8 dans tous les fichiers de ressources ouverts. Comme le fichier qui vient d'être créé et ouvert par la commande Creer fichier ressources ne contient pas cette ressource, LISTE DE CHAINES VERS TABLEAU recherche alors la ressource dans le fichier de ressources de la structure de la base. Ce fichier ne la contenant pas non plus, LISTE DE CHAINES VERS TABLEAU examine alors le fichier de ressources de l'application 4D et y trouve finalement la ressource recherchée. Le tableau est alors rempli.

Conclusion : Lorsque vous travaillez avec des fichiers de ressources, vous devez passer un numéro de référence de fichier de ressources aux commandes 4D de gestion des ressources, si vous voulez accéder à un fichier spécifique. Sinon, 4D considère que vous ne souhaitez pas utiliser de ressources en provenance d'un fichier particulier.

Types de ressources


Le format interne d'un fichier de ressources est très structuré. En plus des données de chaque ressource, le fichier contient un en-tête et un descriptif qui fournissent des informations précises sur son contenu.

Les ressources sont classées en types. Le type d'une ressource est indiqué par une chaîne de 4 caractères. Par exemple :

Une ressource de type "STR#" est une ressource contenant une liste de chaînes Pascal. Elle est appelée ressource liste de chaînes.

Une ressource de type "STR " (notez que le quatrième caractère est un caractère d'espacement) est une ressource contenant une chaîne Pascal individuelle. Elle est appelée ressource chaîne.

Une ressource de type "TEXT" est une ressource contenant du texte sans longueur déclarée. Elle est appelée ressource texte.

Une ressource de type "PICT" est une ressource contenant une image QuickDraw Macintosh que vous pouvez utiliser et afficher sous Mac OS et Windows avec 4D. Elle est appelée ressource image.

Une ressource de type "cicn" est une ressource contenant une icône couleur Macintosh que vous pouvez utiliser et afficher sous Mac OS et Windows avec 4D. Une ressource "cicn" peut, par exemple, être associée à un élément d'une liste hiérarchique à l'aide de la commande CHANGER PROPRIETES ELEMENT. Elle est appelée ressource icône couleur.

En plus des types de ressources standard (la liste ci-dessus n'est pas exhaustive), vous pouvez créer vos propres types. Par exemple, vous pouvez décider de travailler avec des ressources du type "MTYP" (pour "Mon Type").

Pour obtenir la liste des types de ressources présents parmi tous les fichiers ouverts ou dans un fichier particulier, utilisez la commande LISTE TYPES RESSOURCE. A l'inverse, pour obtenir la liste des ressources d'un certain type parmi tous les fichiers de ressources ouverts ou dans un fichier de ressources particulier, utilisez la commande LISTE RESSOURCES. Cette dernière retourne les numéros et les noms (cf. section suivante) de toutes les ressources d'un type particulier.

Un type de ressource est toujours indiqué par une chaîne de 4 caractères. Les caractères diacritiques et les majuscules/minuscules sont pris en compte. Par exemple, les types de ressources "Hi_!", "hi_!" et "HI_!" sont tous différents.

Important : Les types de ressources en caractères minuscules sont réservés pour le Système d'exploitation. Evitez de désigner vos propres types de ressources en utilisant des caractères minuscules.

ATTENTION : De nombreuses applications s'appuient sur le type des ressources pour traiter leur contenu. Par exemple, lorsqu'elles accèdent à une ressource "STR#", les applications s'attendent à trouver une liste de chaînes. Ne stockez pas de données atypiques dans des ressources de type standard, cela peut provoquer des erreurs système dans vos applications 4D ou dans d'autres applications.

ATTENTION : Comme un fichier de ressources est très structuré, vous ne devez pas y accéder par des commandes autres que celles de gestion des ressources. Notez que si vous passez un numéro de référence de fichier de ressources (sous forme d'une expression 4D de type heure, tout comme pour les numéros de référence de document) à une commande telle que ENVOYER PAQUET, rien ne vous en empêchera (aucune mise en garde ne vous est adressée). Mais il est très probable que le fichier de ressources soit endommagé par l'opération.

ATTENTION : Un fichier de ressources peut contenir jusqu'à 2 700 ressources individuelles. Prenez garde à ne pas de dépasser cette limite (aucune mise en garde ne vous est adressée, mais le fichier de ressources devient endommagé et inutilisable).

Nom et numéro de ressource


Toute ressource a un nom de ressource. Un nom de ressource peut contenir jusqu'à 255 caractères, tient compte des caractères diacritiques mais n'établit pas de distinction entre les majuscules et les minuscules. Les noms des ressources peuvent être utiles pour leur identification visuelle, mais généralement vous accèderez à une ressource par l'intermédiaire de son numéro. Les noms des ressources ne sont pas uniques, plusieurs ressources peuvent avoir le même nom.

Toute ressource a un numéro d'identification (on dit aussi numéro d'ID ou ID). Ce numéro d'ID est unique à l'intérieur d'un type et d'un fichier de ressources. Par exemple :

Un fichier de ressource peut contenir une ressource "ABCD" ID=1 et une ressource "EFGH" ID=1.

Deux fichiers de ressources peuvent contenir une ressource de même type et de même numéro.

Lorsque vous accédez à une ressource par l'intermédiaire d'une commande 4D, vous indiquez son type et son numéro. Si vous ne spécifiez pas le fichier de ressources dans lequel vous souhaitez la rechercher, la commande retournera l'occurrence de la ressource trouvée dans le premier fichier de ressource examiné. Rappelez-vous que les fichiers de ressources sont examinés dans l'ordre inverse de celui dans lequel ils ont été ouverts.

Les numéros de ressources sont compris entre -32 768 et 32 767.

Important : N'utilisez pas de numéros de ressources négatifs, ils sont réservés au Système d'exploitation. N'utilisez pas non plus de numéros situés entre 0 et 14 999, cet intervalle est réservé à 4e Dimension. Pour vos propres ressources, utilisez les numéros situés entre 15 000 et 32 767.

Pour obtenir les numéros et les noms de ressources d'un type particulier, utilisez la commande LISTE RESSOURCES.

Pour obtenir le nom d'une ressource individuelle, utilisez la commande Lire nom ressource.

Pour changer le nom d'une ressource individuelle, utilisez la commande ECRIRE NOM RESSOURCE.

Pour obtenir le numéro courant d'une ressource PICT ou STR# installée par un composant 4D, utilisez la commande Lire ID ressource composant.

Comme chaque commande 4D accepte de manière optionnelle un numéro de référence de fichier de ressources, vous pouvez facilement manipuler des ressources ayant le même type et le même numéro mais situées dans deux fichiers de ressources différents. L'exemple suivant copie toutes les ressources "PICT" d'un fichier de ressources dans un autre :

      ` Ouverture d'un fichier de ressources existant
   $vhResFileA:=Ouvrir fichier ressources("")
   Si (OK=1)
         ` Création d'un nouveau fichier de ressources
      $vhResFileB:=Creer fichier ressources("")
      Si (OK=1)
            ` Récupérer la liste des numéros et des noms de toutes les ressources de type "PICT"
            ` situées dans le fichier de ressources A
         LISTE RESSOURCES("PICT";$aiResID;$asResName;$vhResFileA)
            ` Pour chaque ressource :
         Boucle($vlElem;1;Taille tableau($aiResID))
            $viResID:=$aiResID{$vlElem}
               ` Charger la ressource du fichier A
            LIRE RESSOURCE ("PICT";$viResID;vxResData;$vhResFileA)
               ` Si la ressource peut être chargée
            Si (OK=1)
                  ` Ecrire la ressource dans le fichier B
               ECRIRE RESSOURCE ("PICT";$viResID;vxResData;$vhResFileB)
                  ` Si la ressource peut être écrite
               Si (OK=1)
                     ` Copie également du nom de la ressource...
                  ECRIRE NOM RESSOURCE("PICT;$viResID;$asResName{$vlElem};$vhResFileB)
                     ` ...Ainsi que ses propriétés (cf. § ci-dessous) 
                  $vlResAttr:=Lire proprietes ressource("PICT";$viResID;$vhResFileA)
                  ECRIRE PROPRIETES RESSOURCE("PICT";$viResID;$vlResAttr;$vhResFileB)
               Sinon
                  ALERTE("La ressource PICT ID="+Chaine($viResID)+" ne peut être créée.")
               Fin de si
            Sinon
               ALERTE("La ressource PICT ID="+Chaine($viResID)+" ne peut pas être chargée.")
            Fin de si
         Fin de boucle
         FERMER FICHIER RESSOURCES($vhResFileB)
      Fin de si
      FERMER FICHIER RESSOURCES($vhResFileA)
   Fin de si

Propriétés des ressources


En plus de son type, de son nom et de son numéro, une ressource possède des propriétés supplémentaires (aussi appelées attributs). Par exemple, une ressource peut être purgeable ou non. Cet attribut indique au Système d'exploitation si, une fois la ressource chargée en mémoire, il peut ou non la purger (c'est-à-dire l'effacer) en cas de besoin de mémoire supplémentaire. Comme le montre l'exemple précédent, il peut être important lors de la copie ou de la création d'une ressource de ne pas copier uniquement la ressource, mais également son nom et ses propriétés. Pour plus d'informations sur les propriétés des ressources, reportez-vous aux descriptions des commandes Lire proprietes ressource et ECRIRE PROPRIETES RESSOURCE.

Manipuler le contenu des ressources


Pour charger en mémoire tout type de ressource, utilisez la commande LIRE RESSOURCE, qui retourne le contenu de la ressource dans un BLOB. Pour créer ou réécrire une ressource sur disque, appelez la commande ECRIRE RESSOURCE, qui utilise le contenu du BLOB que vous passez en paramètre pour écrire le contenu de la ressource. Pour supprimer une ressource existante, utilisez la commande SUPPRIMER RESSOURCE.

Pour simplifier la manipulation des ressources, 4D dispose de commandes intégrées supplémentaires dédiées à la gestion des ressources de type standard. Ces commandes vous évitent de devoir analyser des BLOBs pour pouvoir en extraire le contenu des ressources qui vous intéressent :

LISTE DE CHAINES VERS TABLEAU remplit un tableau Alpha ou Texte avec les chaînes de caractères contenues dans une ressource liste de chaînes.

TABLEAU VERS LISTE DE CHAINES crée ou réécrit une ressource liste de chaînes avec les éléments d'un tableau Alpha ou Texte.

Lire chaine dans liste retourne une chaîne particulière d'une ressource liste de chaînes.

Lire ressource chaine retourne la chaîne d'une ressource chaîne.

ECRIRE RESSOURCE CHAINE crée ou réécrit une ressource chaîne.

Lire ressource texte retourne le texte d'une ressource texte.

ECRIRE RESSOURCE TEXTE crée ou réécrit une ressource texte.

LIRE RESSOURCE IMAGE retourne l'image d'une ressource image.

ECRIRE RESSOURCE IMAGE crée ou réécrit une ressource image.

LIRE RESSOURCE ICONE retourne une icône couleur en tant qu'image.

Notez que ces commandes sont fournies afin de simplifier l'emploi des ressources de type standard, mais vous pouvez parfaitement utiliser LIRE RESSOURCE et ECRIRE RESSOURCE avec des BLOBs. Par exemple, la ligne de code suivante :

   ALERTE(Lire ressource texte(20000))

est équivalente (en plus court) à :

   LIRE RESSOURCE("TEXT";20000;vxData)
   Si (OK=1)
      $vlOffset:=0
      ALERTE(BLOB vers texte(vxData;Texte sans longueur;$vlOffset;Taille BLOB(vxData)))
   Fin de si 

Les commandes 4D et les ressources


Outre les commandes de gestion des ressources décrites dans ce chapitre, plusieurs commandes 4D vous permettent de travailler avec des fichiers de ressources :

Sur Macintosh, DOCUMENT VERS BLOB et BLOB VERS DOCUMENT peuvent charger et écrire la totalité de la resource fork d'un fichier Macintosh.

A l'aide des commandes CHANGER PROPRIETES ELEMENT et CHANGER PROPRIETES LISTE, vous pouvez associer des ressources images ou icônes couleur aux éléments d'une liste, ou encore utiliser des ressources icônes couleur en tant qu'icônes des éléments parents d'une liste hiérarchique (déployés/contractés).

La commande JOUER SON joue des ressources "snd " (sous Mac OS et Windows).

La commande CHANGER POINTEUR SOURIS peut utiliser des ressources "CURS" pour modifier l'apparence du pointeur de la souris.

Référence

Commandes du thème BLOB, Erreurs du gestionnaire de ressources du système, Les ressources et 4D Insider : un exemple, Lire ID ressource composant.


4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant