Utiliser l'élément zéro d'un tableau

4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 6.0


Un tableau a toujours un élément zéro. Même si l'élément zéro n'est pas affiché lorsqu'un tableau est utilisé pour remplir un objet de formulaire, vous pouvez l'utiliser sans réserve dans le langage.

Un exemple possible d'utilisation de l'élément zéro est le cas de la combo box examiné dans la section Tableaux et objets de formulaire.

Voici deux autres exemples :

(1) Si vous voulez exécuter une action seulement lorsque vous cliquez sur un élément autre que l'élément préalablement sélectionné, vous pouvez garder la trace de chaque élément sélectionné. Une façon de le faire est d'utiliser une variable process dans laquelle vous conservez le numéro de l'élément sélectionné. Une autre manière consiste à utiliser l'élément zéro du tableau :

      ` Méthode objet zone de défilement atNoms
   Au cas ou
      : (Evenement formulaire=Sur chargement)
            ` Initialisont le tableau
         TABLEAU TEXTE (atNoms;5)
            ` ...
            ` Initialiser l'élément zéro avec le numéro
            ` de l'élément courant sélectionné sous sa forme alphanumérique
            ` Ici vous commencez sans élément sélectionné 
         atNoms{0} :="0"

      : (Evenement formulaire=Sur libération)
            ` Nous n'avons plus besoin du tableau
         EFFACER VARIABLE(atNoms)

      : (Evenement formulaire=Sur clic)
         Si (atNoms#0)
            Si (atNoms#Num(atNoms{0} ))
               vtInfo:="Vous avez cliqué sur : "+atNoms{atNoms} +" qui n'était pas précédemment sélectionné."
               atNoms{0} :=Chaine(atNoms)
            Fin de si
         Fin de si
      : (Evenement formulaire=Sur double clic)
         Si (atNoms#0)
            ALERTE ("Vous avez double-cliqué sur : "+atNoms{atNoms})
         Fin de si
   Fin de cas

(2) En mode compatibilité ASCII, lorsque vous envoyez des caractères vers un document ou le port série, ou bien en recevez, vous avez la possibilité de filtrer les codes ASCII entre les plates-formes et systèmes dont les tables ASCII diffèrent — via les commandes UTILISER FILTRE, Mac vers ISO, ISO vers Mac, Mac vers Windows et Windows vers Mac.

Dans certains cas, vous pouvez souhaiter contrôler intégralement la traduction des codes ASCII. Pour cela, vous pouvez utiliser un tableau d'entiers de 255 éléments, dans lequel le Nième élément est la traduction ASCII du caractère dont le code ASCII d'origine est N. Par exemple, si le code ASCII 187 doit devenir 156, vous écrivez <>tiFiltreAsciiExport{187}:=156 et <>tiFiltreAsciiImport{156}:=187 dans la méthode qui initialise les tableaux interprocess utilisés dans la base. Vous pouvez alors envoyer une suite de caractères en utilisant une méthode projet telle que celle-ci :

      ` X ENVOYER PAQUET ( Texte { ; Heure }  )
   Boucle ($vlChar;1;Longueur($1))
      $1[[vlChar]]:=Caractere(<>tiFiltreAsciiExport{Code de caractere($1[[vlChar]])} )
   Fin de boucle
   Si (Nombre de parametres>=2)
      ENVOYER PAQUET ($2;$1)
   Sinon
      ENVOYER PAQUET ($1)
   Fin de si

      ` X Recevoir paquet ( Texte { ; Heure }  ) -> Texte
   Si (Nombre de parametres>=2)
      RECEVOIR PAQUET ($2;$1)
   Sinon
      RECEVOIR PAQUET ($1)
   Fin de si
   $0:=$1
   Boucle ($vlChar;1;Longueur($1))
      $0[[vlChar]]:=Caractere(<>tiFiltreAsciiImport{Code de caractere($0[[vlChar]])} )
   Fin de boucle

Dans cet exemple, si une suite de caractères contenant des caractères NULL (code ASCII zéro) est envoyée ou reçue, l'élément zéro des tableaux <>tiFiltreAsciiExport et <>tiFiltreAsciiImport jouera son rôle comme n'importe lequel des 255 éléments du tableau.

Référence

Présentation des tableaux.


4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant