BiS_FillL

Fonction Catégorie Version
BIS 11 BiS_FillL Gestion de Chaînes 1.0 - Janvier 2007

Description

But Ajoute au début d'une chaîne, des caractères de remplissage.
Prototype (BiS_FillL Ch_ou_Nbr Nb_Car Type_Car )
Arguments Ch_ou_Nbr - Le texte ou le nombre à formater - Chaîne Entier Réel -
Nb_Car - Longueur finale de la chaîne retournée - Entier -
Type_Car - Le caractère de remplissage - Chaîne -
Retours La chaîne formatée
Var. globales Néant
Description Ajoute des caractères de remplissage à gauche, c'est à dire au début, jusqu'à ce que la longueur désirée de la chaîne de retour soit atteinte.
Le premier argument peut être un nombre, entier ou réel, mais sera retourné sous forme de chaîne.
Notes En général, le caractère de remplissage sera l'espace " ", mais ce peut être tout caractère ASCII non spécial.
Si l'argument n'est ni une chaîne ni un nombre, la chaîne retournée est une chaîne ne contenant que les caractères de remplissage.
Pour ajouter des caractères de remplissage à droite, utilisez BiS_FillR.
Exemples

Commande: (setq T1 "Texte formaté")
Commande: (BiS_FillL T1 20 " ")
	retourne   "       Texte formaté"
Commande: (BiS_FillL T1 20 "*")
	retourne   "*******Texte formaté"
Commande: (BiS_FillL T1 10 "*")
	retourne   "Texte formaté"
Commande: (BiS_FillL 124500 10 "-") 
	retourne   "----124500"
Commande: (BiS_FillL -123.4560 15 "=")   
	retourne   "======-123.4560"
Commande: (setq L1 '(50 "abcd" 2.50))
Commande: (BiS_FillL L1 30 "Z")
	retourne   "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
  (L1 est une liste et non pas une chaîne ou un nombre  - 
  La fonction retourne ici, une chaîne de 30 caractères "Z").

La fonction


  1-  (defun BiS_FillL (*Str_or_Nb *Nbr_Char *Char / Text1)
 2-     (cond
 3-        ((= (type *Str_or_Nb) 'INT)
 4-            (setq Text1 (itoa *Str_or_Nb))
 5-        )
 6-        ((= (type *Str_or_Nb) 'REAL)
 7-            (setq Text1 (rtos *Str_or_Nb))
 8-        )
 9-        ((= (type *Str_or_Nb) 'STR)
10-            (setq Text1 *Str_or_Nb)
11-        )
12-        (t (setq Text1 *Char))
13-     ) 
14-     (if (and
15-           (= (type *Char) 'STR) 
16-	          (= (type *Nbr_Char) 'INT)
17-         )
18-         (while (< (strlen Text1) *Nbr_Char) 
19-           (setq Text1 (strcat *Char Text1))
20-         )
21-     ) 
22-     Text1
23-  ) 

Lignes 3-4 : Si le 1er argument est un nombre entier, stocke en Text1 cet argument 
				transformée en chaîne.
Lignes 6-7 : Si le 1er argument est un nombre réel, stocke en Text1 cet argument 
				transformée en chaîne.
Lignes 9-10 :Si le 1er argument est une chaîne, stocke en Text1 cette chaîne.
Ligne 12 :   Dans tous les autres cas, stocke en Text1 un caractère de remplissage *Char
Ligne 15 :   Si le caractère de remplissage est bien une chaîne
Ligne 16 :	 	et si *Nbr_Char (le nombre total de caractères) est un entier, 
Ligne 18 :	 	Tant que la longueur de Text1 est inférieure à *Nbr_Char,
Ligne 19 :          Ajoute un caractère de remplissage devant Text1
Ligne 22 :	 	Retourne  la nouvelle chaîne.

Type : Renvoie le type de l'élément spécifié.
Itoa : Convertit un nombre entier en une chaîne et renvoie le résultat.
Rtos : Convertit un nombre réel en chaîne. Ici, le mode et la précision ne sont pas définis.
While : Evalue une expression test (ici, le nombre de caractères), et si elle est vraie, évalue d'autres expressions (ici, la ligne 19) ; répète le processus.
Strlen Renvoie le nombre de caractères présents dans la chaîne Text1 (nombre entier).
Strcat Renvoie la chaîne Text1 résultant de la concaténation de *Char et de Text1.