4D v16.3

Tester conteneur

Accueil

 
4D v16.3
Tester conteneur

Tester conteneur 


 

Tester conteneur ( typeDonnées ) -> Résultat 
Paramètre Type   Description
typeDonnées  Chaîne in Type de données
Résultat  Entier long in Taille (en octets) des données présentes dans le conteneur ou code d'erreur

Tester conteneur vous permet de savoir s'il y a des données du type typeDonnées dans le conteneur de données.

Note : Dans le cadre d'une opération de copier/coller, le conteneur de données correspond au Presse-papiers.

Si le conteneur de données est vide ou ne contient pas de données du type spécifié, la fonction retourne une erreur -102. Si le conteneur contient des données du type spécifié, la fonction retourne la taille des données exprimée en octets.

Passez dans typeDonnées une valeur définissant le type de données à tester. Vous pouvez passer une signature 4D, un type UTI (Mac OS), un nom/numéro de format (Windows), ou un type de 4 caractères (compatibilité). Pour plus d'informations sur ces types, reportez-vous à la section Gestion du conteneur de données.

Après avoir vérifié que le conteneur contient bien des données du type que vous voulez, vous pouvez les récupérer à l'aide d'une des commandes suivantes :

  • Si le conteneur contient du texte, vous pouvez l'extraire à l'aide de la commande Lire texte dans conteneur, qui retourne une valeur texte. Sinon, vous pouvez utiliser la commande LIRE DONNEES CONTENEUR, qui retourne le texte dans un BLOB.
  • Si le conteneur contient une image, vous pouvez l'extraire à l'aide de la commande LIRE IMAGE DANS CONTENEUR, qui retourne l'image dans un champ ou une variable. Sinon, vous pouvez utiliser la commande LIRE DONNEES CONTENEUR, qui retourne l'image dans un BLOB.
  • Si le conteneur contient un chemin d'accès de fichier, vous pouvez l'extraire à l'aide de la commande Lire fichier dans conteneur, qui retourne le chemin d'accès du fichier.
  • Pour tout type de données, vous pouvez utiliser la commande LIRE DONNEES CONTENEUR, qui retourne les données dans un BLOB.

L'exemple suivant teste si le Presse-papiers contient une image et, si oui, la copie dans une variable 4D :

 Si(Tester conteneur(Données image)=1) //Y a-t-il une image dans le Presse-papiers ?
    LIRE IMAGE DANS CONTENEUR($vPicVariable//Si oui, extraire l'image du Presse-papiers
 Sinon
    ALERTE("Il n'y a pas d'image dans le Presse-papiers.")
 Fin de si

Généralement, après un couper ou un copier, les applications placent des données de type Texte ou Image dans le Presse-papiers, ces deux types de données standard sont reconnus par la plupart des applications. Cependant, une application peut placer dans le Presse-papiers plusieurs copies des mêmes données sous des formats différents. Par exemple, chaque fois que vous copiez ou coupez un tableau, l'application tableur peut placer les données dans un format propriétaire — par exemple, ‘SPSH’ — ou dans les formats SYLK et TEXT. La copie ‘SPSH’ contient les données structurées dans le format interne de l'application. La copie SYLK contient les mêmes données, mais dans le format SYLK, reconnu par la plupart des tableurs. Enfin, la copie TEXT contient les mêmes données, mais sans les informations de formatage supplémentaires présentes dans les formats SYLK ou ‘SPSH’. Donc, lorsque vous écrivez des routines de Couper/Copier/Coller entre 4D et une application tableur, en prenant l'hypothèse que vous connaissez la description du format ‘SPSH’ et que vous pouvez analyser les données SYLK, vous pouvez écrire le code suivant :

 Au cas ou
  ` D'abord, vérifier si le Presse-papiers contient les données venant du tableur
    :(Tester conteneur('SPSH')>0)
  ` ...
  ` Ensuite, vérifier si le Presse-papiers contient des données au format SYLK
    :(Tester conteneur('SYLK')>0)
  ` ...
  ` Enfin, vérifier si le Presse-papiers contient des données au format TEXT
    :(Tester conteneur('TEXT')>0)
  ` ...
 Fin de cas

Autrement dit, vous essayez d'extraire du Presse-papiers la copie des données la plus riche en informations originales.

Vous voulez déplacer des données en format privé entre divers objets de votre formulaire. Vous pouvez écrire :

  //objet source
 Si(Evenement formulaire=Sur début glisser)
    AJOUTER DONNEES AU CONTENEUR("some.private.data";$data)
 Fin de si

  //objet cible
 Si(Evenement formulaire=Sur glisser)
    $0:=Choisir(Tester conteneur("some.private.data")>0;0;-1)
 Fin de si

Référez-vous à l'exemple de la commande AJOUTER DONNEES AU CONTENEUR.



Voir aussi  

Conteneur de données
LIRE DONNEES CONTENEUR
LIRE IMAGE DANS CONTENEUR
Lire texte dans conteneur

 
PROPRIÉTÉS 

Produit : 4D
Thème : Conteneur de données
Numéro : 400
Nom intl. : Pasteboard data size

Cette commande modifie la variable système Error

 
HISTORIQUE 

Modifié : 4D v11 SQL

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)