Fraid Posté(e) le 25 août 2012 Posté(e) le 25 août 2012 Bonjour, Afin de limiter les tests d exécution de certaines de mes routines manipulant les textes, j'utilise cette fonction pour éliminer les lignes vides de caractères. ;Effacer les lignes vides (pouvant contenir blancs et Tabulations) d un fichier texte ;Arguments: OpFichier -Chemin du fichier ex: "C:/Test/Communes.csv" ; Utilise DosLib (defun SupLigVid (OpFichier / Fch Pst Nombl riid rid ) (setq Nombl (Len-Line OpFichier) Fch (open OpFichier "r") ) (repeat Nombl (setq riid (read-line Fch) rid (dos_strtrim (dos_strreplace riid "\t" "")) ) (if (not (= rid "")) (setq Pst (cons riid Pst))) ) (setq Pst (reverse Pst)) (close Fch) (setq Fch (open OpFichier "w")) (foreach Z Pst (write-line Z Fch)) (close Fch) T ) ;Compteur de lignes dun fichier Texte ;Arguments: OpenFichier -Chemin du fichier ex: "C:/Test/Communes.csv" ;retour: Entier (defun Len-Line ( OpenFichier / len Fich) (setq len 0 Fich (open OpenFichier "r")) (while ( read-line Fich) (setq Len (+ 1 len))) (close Fich) len ) Elle fonctionne bien, sauf qu'a la fin de la dernière ligne, elle ajoute un retour chariot ajoutant une ligne vide a la fin. je ne vois pas comment l’éliminer... Merci https://github.com/Fraiddd
Carboleum Posté(e) le 27 août 2012 Posté(e) le 27 août 2012 Je sais pas si ca va résoudre ton problème, mais j'aurai tendance à faire une boucle while plutôt que repeat (d'autant plus que repeat t'impose de faire un while pour déterminer le nombre de lignes): [...] (while (setq riid (read-line fch)) (if (/= "" (setq rid (dos_strtrim (dos_strreplace riid "\t" "")))) (setq pst (cons pst rid)))) (setq pst (reverse pst)) [...] Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
Patrick_35 Posté(e) le 27 août 2012 Posté(e) le 27 août 2012 Salut Essaye un write a la place d'un write-line sur la dernière ligne @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Fraid Posté(e) le 27 août 2012 Auteur Posté(e) le 27 août 2012 Je vient d'essayer avec write (qui n'est plus documenté ?) cela n'a rien changé. Ce n'est pas grave, je ne vais pas passer mon temps la dessus, je m'en suis accommodé.. Et merci pour ton conseil Carboleum, c'est vrais que c'est plus concis. a pluche et encore Merci https://github.com/Fraiddd
Patrick_35 Posté(e) le 27 août 2012 Posté(e) le 27 août 2012 Erratum, j'ai confondu princ et write Après un resr rapide, ceci fonctionne (defun c:test(/ fic) (setq fic (open "c:/test/test.txt" "w")) (princ "Ceci est un test" fic) (close fic) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant