Gambas France BETA


Pas de compte ? Incription

[Résolu] Importer le contenu d'un fichier text dans une textarea ou une textbox

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 26/2/2011 à 17:13:00
Bonjour,

Voilà, j'ai du texte à exposer temporairement (conseils ponctuels), et plutôt que d'écrire tout ça dans mon code, j'aimerais bien faire des fichiers txt - donc, faciles à modifier au besoin, et d'en afficher le contenu au moment opportun.
J'ai tenté la textarea, (au passage, j'ai trouvé "insert" pour mettre quelque chose dedans, mais il y a sûrement d'autres méthodes), mais quand j'essaie de rentrer le contenu de mon fichier, je n'ai que la première phrase et encore, sans retour à la ligne, donc, hors écran pour la fin.
J'ai le même souci avec une textbox.
En y regardant de plus près, c'est la lecture de mon fichier qui coince. En réalité, dès que la première phrase est avalée, les choses en restent là, ce qui ne m'étonne pas trop. Mais je ne peux pas mettre plusieurs variables, d'autant que mes fichiers auront des tailles bien différentes.
Donc, mon souci : comment mettre le contenu d'un fichier.txt (y compris ses retours chariot), dans une textarea ou une textbox ?

Merci de votre aide.
Prokopy#2 Posté le 26/2/2011 à 17:38:00
Kinder PinguiSalut Foromus,

Essaie d'utiliser la fonction File.Load() pour charger directement tout le contenu d'un fichier :

1
TextArea1.Text = File.Load("astuce1.txt")


Cette fonction est à utiliser avec modération, car elle fait bosser le disque dur. Si tu réutilises le contenu plusieurs fois dans ton code, utilise une variable. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Foromus#3 Posté le 26/2/2011 à 18:16:00
Bonjour,

Merci pour le conseil, mais ça ne fonctionne qu'à moitié...
En fait, je récupère bien l'ensemble du fichier, mais les retours chariot ne sont pas gérés.
Pour les essais, j'ai mis une textarea et une textbox, histoire de voir les différences.
Dans la textbox, j'ai tout sur une seule ligne, ce qui est inutilisable.
Dans la textarea, j'ai 3 lignes cette fois, ce qui est moins pire, et là, en plus, je suis gratifié d'une barre de déplacement : il n'empêche que ce n'est pas utilisable non plus.
Je suis passé par une variable, ce qui ne change rien je suppose...
Je pense que j'avais fait un truc du genre sous VB, et que ça fonctionnait, mais là, je ne sais pas trop.
Prokopy#4 Posté le 26/2/2011 à 18:36:00
Kinder PinguiEst-ce qu'on pourrait avoir ton code s'il te plaît ?
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Foromus#5 Posté le 26/2/2011 à 22:00:00
Oh, le code ? Comme ci-dessus !

En clair :

1
DIM Contenu AS STRING Contenu = File.Load(Application.Path & "/Aide/Aide" & NumLesson & ".txt") TextArea1.Text = Contenu


Cela dit, et par tâtonnements, je suis arrivé à un résultat : j'ai activé la propriété Wrap à True, et ça a l'air de fonctionner, tout au moins dans la textarea ! Les § sont pris en charge, le retour à la ligne s'effectue normalement, en fait, je pense que je vais garder ça comme ça !
Au passage, un truc tout bête, et que je n'ai pas trouvé sur les points de conseils, c'est comment remplir la textarea. Cela peut paraître évident pour qui a l'habitude, mais quand on n'a jamais utilisé, ça l'est moins, et j'ai cherché un bon bout de temps...

Merci pour l'aide, je vais utiliser comme ça.
spheris#6 Posté le 28/2/2011 à 11:39:00
foromus,
je ne comprend pas bien ta question :

...c'est comment remplir la textarea...


tout simplement par la commande que tu as annoncé plus haut :

1
TextArea1.Text = montexte


;) ;)
Gamuti#7 Posté le 20/3/2011 à 11:19:00
J'ai eu aussi le problème, à un moment donné, que le retour chariot n'était pas pris en charge correctement.

Pour contourner le problème, j'ai créé des fichiers au format textes en rajoutant le caractère retour chariot ET le caractère retour à la ligne.
En fait cela se concrétise de la manière suivante :
chr(13) & chr(10)
que j'utilise par exemple, lorsque j'envoie le contenu d'une listbox dans un fichier texte.

Exemple concret :
1
File.Save("/tmp/pb2.txt", ListBox1.List.Join(Chr(13) & Chr(10)))


Ainsi, les retours chariots sont réellement pris en compte, et de surcroit, on peut manipuler les chaines de caractères sans se tracasser avec les longueurs de chaines.
Bin oui, les retours chariots consommes 2 caractères !! de même que les caractères accentués (pas tous...)

Bonne réflexion.
manu#8 Posté le 20/3/2011 à 12:18:00
Avec Gambas ca roule !Moi j'utilise une textArea de la façon suivante :

1
PUBLIC SUB litFichier()DIM hFile AS FileDIM sLine AS StringDIM sFile AS StringhFile = OPEN "monFichiertexte" FOR INPUT WHILE NOT Eof(hFile) LINE INPUT #hFile, sLine sFile &= "\n" & sLine WEND TextArea1.text = sFileEND


L'idée, c'est de lire chaque ligne du fichier et d’insérer un saut de ligne a chaque ligne. On colle ca dans une variable (sFile) par concaténation et on donne a la propriété text d'une textArea la valeur de la variable... :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Prokopy#9 Posté le 20/3/2011 à 14:45:00
Kinder PinguiCertains fichiers (particulièrement ceux sous Windows) utilisent le retour chariot et le retour à la ligne à la fois pour passer une ligne. Cela explique pourquoi cela ne marche qu'avec la séquence Chr(13) & Chr(10).
Une seule objection : Chr n'est à utiliser que quand tu ne connais pas à l'avance le code ASCII de ton caractère quand tu écris ton programme. Comme ce n'est pas le cas ici, utilise plutôt la séquence "\r\n" :

1
File.Save("/tmp/pb2.txt", ListBox1.List.Join("\r\n"))


Et hop. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
1