Sélectionner une partie d'un fichier texte

underdog08 Messages postés 30 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 3 avril 2009 - 12 nov. 2007 à 23:23
underdog08 Messages postés 30 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 3 avril 2009 - 19 nov. 2007 à 10:54
Bonjour,

J'arrive à afficher sans problème le contenu complet d'un fichier txt dans un label, mais est-il possible d'afficher seulement une sélection du fichier, par exemple afficher le texte entre deux lignes bien précises?

Merci d'avance

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 nov. 2007 à 03:51
Salut
Oui, bien sûr, mais il faudra mettre le code qui va bien.
Le transfert de ton fichier vers ton Label se faisant par programme, il suffit de détecter quand commencer et quand finir.
A toi de les définir.
Si c'st un texte qui doit faire le déclencheur, tu le repèreras avec l'instruction Instr.
On n'a aucune idée de la manière avec laquelle tu lis ton fichier actuellement.
Si tu lis ligne par ligne avec un "Line Input #", il te suffira de faire le test de recherche de cette chaine de départ, puis, quand tu l'aura rencontré, tu transfèreras les données suivantes dans ton Label.
Là encore, il faudra rechercher ton texte déclencheur de fin pour savoir quand arrêter d'envoyer vers le Label.

Si tu n'es pas très sûr côté lecture de fichier, charge 2 ou 3 sources qui parlent de fichier et regarde comment s'est fait.
Instructions de base : "Open", "Close #", "Line Input #", "Do-Loop", "Instr"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
underdog08 Messages postés 30 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 3 avril 2009
13 nov. 2007 à 12:50
Pour l'instant je lis mon fichier en entier comme ca:

CheminFichier = "c:.........."
a = FreeFile()
Open CheminFichier For Input As #a
      Label1.Caption = Input(LOF(a), a)
Close #a

J'ai deja vu qu'on pouvait utiliser "Line Input", donc je vais creuser le probleme avec "Instr"

Merci Jack
0
underdog08 Messages postés 30 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 3 avril 2009
15 nov. 2007 à 14:55
Beh je doit être vraiment bête car meme avec beaucoup d'exemple je n'y arrive pas!!

Je fait un espece de jeu de role où tous les paragraphes de mon histoire sont dans un fichier txt, ce que j'aimerai c'est pouvoir accéder au bon paragraphe en fonction des actions effectuées par le joueur, et afficher le paragraphe en question dans un label.
Donc je cherche une solution pour afficher le texte de mon fichier entre la ligne 25 et 40 par ex. Si cette méthode n'est pas possible ok pour chercher une chaine de caractères qui repèrerai mon paragraphe.
J'ai trouvé ce code censer afficher 10 lignes mais rien à faire je n'arrive pas à le faire fonctionner!

OPEN "bod.txt" FOR INPUT AS #2

10 LINE INPUT #2, Li$
PRINT Li$
IF EOF(2) <> 1 THEN 10

Je débute et j'ai vraiment trop de mal ...........
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 nov. 2007 à 21:02
Disons que tu veuilles lire à partir de la ligne 4 les 5 lignes qui suivent, il te faut donc un compteur pour savoir où tu en es dans la lecture

Sub LectureLineInput()
    Dim Compteur As Long, I As Integer
    Dim strTemp As String, strFinale As String
    Dim CheminFichier As String, a As Integer
   
    CheminFichier = "c:\Test.txt"
    a = FreeFile()
    Open CheminFichier For Input As #a
        Do Until EOF(1)  'lire tant qu'on est pas rendu à la fin du fichier
            Line Input #a, strTemp
            Compteur = Compteur + 1     'indique le numéro de ligne lue
            If Compteur = 4 Then             'lecture à partir de la 4e ligne
                For I = 1 To 5                    'lecture des 5 lignes suivantes
                    Line Input #a, strTemp
                    strFinale = strFinale & strTemp & vbCrLf
                Next
                Exit Do  'sortir de la boucle... ça ne sert à rien de continuer
            End If
        Loop
    Close #a
    MsgBox strFinale
End Sub

MPi²
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 nov. 2007 à 21:04
Oups... l'habitude...
changer EOF(1) pour EOF(a)

MPi²
0
underdog08 Messages postés 30 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 3 avril 2009
19 nov. 2007 à 10:54
Ca fonctionne impec et ça aide à bien comprendre, c'est vraiment sympa je vais pouvoir avancer dans mon projet maintenant!

Merci MPi²
0
Rejoignez-nous