BiL_FrmLst

Fonction Catégorie Version
BIL 16 BiL_FrmLst Gestion des Listes 1.0 - Janvier 2007

Description

But Découpe une chaîne en éléments (chaînes) de liste.
Prototype (BiL_FrmLst Global_Chaîne Séparateur)
Argument Global_Chaîne - La chaîne à découper - chaîne -
Séparateur - Caractère séparateur - chaîne -
Retours Une liste de sous-chaînes - Liste -
Var. globales Néant
Description Découpe une chaîne en plusieurs sous-chaînes aux endroits indiqués par un caractère séparateur, et retourne l'ensemble sous forme d'une liste.
Notes Le caractère séparateur peut être tout caractère non spécial.
Cette fonction est intéressante pour récupérer des valeurs stockées dans un fichier texte (Voir fonction BiF_ReadFileTxt) .
Exemples

Commande: (BiL_FrmLst "Bleu*Vert*Jaune*Noir" "*")
	retourne	("Bleu" "Vert" "Jaune" "Noir")

Commande: (BiL_FrmLst "Bleu*Vert*Jaune*Noir" "$")
	retourne	("Bleu*Vert*Jaune*Noir")

Commande: (BiL_FrmLst "123|**456**|789.25" "|")
	retourne	("123" "**456**" "789.25")

La fonction


   1-  (defun BiL_FrmLst (*Line *Char / Pos_Dep Pos_Sep Flag Lst_Ret) 

   2-      (setq Pos_Dep 1)
   3-      (while (not Flag)
   4-         (setq *Line (substr *Line Pos_Dep)
   5-               Pos_Sep (BiS_TestFCar *Line *Char)
   6-         )
   7-         (if (not Pos_Sep)  
   8-             (setq Pos_Sep (1+ (strlen *Line))
   9-                   Flag T
  10-             )
  11-         ) 
  12-         (setq Lst_Ret (cons (substr *Line 1 (1- Pos_Sep)) Lst_Ret)
  13-               Pos_Dep (1+ Pos_Sep)
  14-         )
  15-      ) 
  16-      (setq Lst_Ret (reverse Lst_Ret))
  17-  )

Ligne 2 : Initialisation de la variable indiquant la position de début de la
              sous-chaine en cours
Ligne 3 : Boucle tant que le drapeau est nil,
Ligne 4 :   Réduit l'argument chaîne *Line à la portion de *Line commençant à Pos_Dep, 
              jusqu'à la fin.
Ligne 5 :   Recherche la position du séparateur à l'aide de la fonction BiS_TestFCar 
              et stocke-la dans Pos_Sep.
Ligne 7 :     S'il n'y a pas de séparateur dans la chaîne,
Ligne 8 :       Conserve en Pos_Sep la longueur de la chaîne restante
Ligne 9 :       Marque le drapeau en T pour indiquer qu'il n'y a plus de séparateur 
                    dans la chaîne restante.
Ligne 12 :    Construit la liste de retour en y ajoutant la sous-liste commençant au 
                   premier caractère jusqu'au séparateur (non compris).
Ligne 16 :  Retourne la liste de retour après l'avoir retournée pour qu'elle soit 
                   dans le bon ordre.

While : Evalue l' expression (not Flag) et si elle est vraie, évalue les lignes 4 à 14 ; répète le processus
Substr : Ligne 4, extrait de la chaîne *Line la chaîne commençant au n° Pos_Dep jusqu'à la fin Ligne 12, extrait de *Line la chaîne commençant au 1er caractère et de longueur Pos_Sep -1.
BiS_TestFCar : Fonction BiRaRR qui retourne la première position d'un caractère spécifié dans une chaîne.
Strlen : Renvoie le nombre de caractères présents dans la chaîne spécifiée (nombre entier).
Cons : Construit la liste Lst_Ret en y ajoutant le nouvel élément en début de liste.
Reverse : Renvoie une liste avec ses éléments inversés.