4D v13.4

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

Accueil

 
4D v13.4
Utiliser l'élément zéro d'un tableau

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


 

 

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.

(*) Il existe une exception : dans les List Box de type tableau, l'élément zéro est utilisé en interne pour conserver la valeur précédente d'un élément en cours d'édition. Il n'est donc pas possible de l'utiliser dans ce contexte.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Tableaux
Nom intl. : Using the element zero of an array

 
VOIR AUSSI  

Présentation des tableaux