Aller au contenu

Fichier texte et read-line


Invité CityHunter87

Messages recommandés

Invité CityHunter87
Posté(e)

Bien le bonsoir :)

 

J'aimerais dans mon programme LISP recueillir les données d'un fichier texte ligne par ligne à l'aide d'un read-line.

 

Voici le code que je tape et l'erreur que je me tape lorsque je lance mon programme :)

 

; erreur: no

function definition: GABARIT

 

 

(setq dft (open "C:/Users/Julien/Desktop/PROJET SIG/Prog/variables.txt" "r"))

 

(while (setq enrg (read-line dft))

(setq gabarit (read-line dft))

(setq donnee1 (read-line dft))

(setq donnee2 (read-line dft))

.

.

.

.

(setq donnee12 (read-line dft))

)

(close dft)

 

 

Pouvez vous m'aider à trouver mon erreur ?? Les sujets que j'ai consulté n'ont pas répondu à mes attentes.

 

Merci.

 

 

 

Posté(e)

Salut,

 

À lire le code que tu as posté, je ne comprends pas le pourquoi de ce message d'erreur.

Il n'y a pas d'expression qui serait un appel de fonction avec 'gabarit'.

 

Par contre, tu utilises une boucle (while (setq enrg (read-line dft)) ...) à l'intérieur de la quelle tu refais plusieurs (read-line ...) ce qui n'est pas cohérent.

Chaque appel de read-line lit la ligne suivante.

 

Si tu ne veux que les 13 premières lignes, tu n'as pas besoin de faire de boucle :

 

(setq dft (open "C:/Users/Julien/Desktop/PROJET SIG/Prog/variables.txt" "r"))
(setq gabarit (read-line dft))
(setq donnee1 (read-line dft))
(setq donnee2 (read-line dft))
...
(setq donnee12 (read-line dft))
(close dft)

 

Si tu veux lire tout le fichier, tu peux faire une boucle while et récupérer chaque ligne dans une liste qu'il faudra inverser à la fin pour la remettre dans l'ordre.

 

(setq dft (open "C:/Users/Julien/Desktop/PROJET SIG/Prog/variables.txt" "r"))
(while (setq line (read-line dft))
 (setq lst (cons line lst))
)
(close dft)
(setq lst (reverse lst))

Cette méthode permet de lire tout le fichier sans connaitre à l'avance le nombre de lignes.

On accède ensuite aux différentes lignes avec la fonction nth :

(setq gabarit (nth 0 lst))
(setq donnee1 (nth1 lst))
(setq donnee2 (nth2 lst))

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Invité CityHunter87
Posté(e)

Je te remercie une nouvelle fois Gile. Tu as résolu mon problème.

 

Tu m'auras beaucoup aidé ces derniers temps !

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité