IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Lire un fichier renommé en .txt


Sujet :

VB 6 et antérieur

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut Lire un fichier renommé en .txt
    Bonjour,

    Je souhaiterais lire un fichier renommé en .txt.

    Une partie du fichier est lisible et je souhaite y récupérer certaines valeurs mais lorsque je lis le fichier avec la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Input_file = "c:\test.txt"
    Open Input_file For Input As ifile 
    Do While Not EOF(ifile)
     
    Line Input #1, Laligne
     
    Loop
     
    Close #1
    Mais cela bloque à la première ligne certainement du à un problème de lecture de l'encodage...

    Si quelqu'un peut m'éclairer...

    Merci

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 066
    Points : 17 092
    Points
    17 092
    Par défaut
    Salut

    Tu ouvres le fichier avec une variable ifile désignant le port disponible pour la lecture du fichier, puis tu utilises un port N°1 (ligne 7 dans ton code).
    Rien ne dit que ifile a pourvaleur 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Input_file = "c:\test.txt"
    ifile = FreeFile
    Open Input_file For Input As ifile
    Do While Not EOF(ifile)
        Line Input #ifile, Laligne
    Loop
    Close #ifile
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Autant pour moi...j'ai oublié de mettre les variables dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim Laligne As Integer
    En fait le code semble fonctionner car j'ai bien une valeur retournée qui correspond au début du fichier mais j'ai l'impression qu'il n'apprécie pas certains caractères dans le fichier et donc qu'il s'arrete...je ne trouve pas le moyen de lui faire lire ces caractères :\

    Edit : Non en fait je viens de voir en détail ce que tu dis dans le post et je suis moins sûr de mon code...visiblement cela pourrait interrompre la boucle ?

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 066
    Points : 17 092
    Points
    17 092
    Par défaut
    Il faut donc ouvrir le fichier en mode Binary.
    Pour plus d'informations regarder dans MSDN rubrique Input, fonction et Input #, instruction.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Dim Input_file String
    Dim Laligne
    ifile = FreeFile
     
     
    Input_file = "c:\test.txt"
    Open Input_file For Input As ifile 'For Input As ifile 'input file nom du fichier
    Do While Not EOF(ifile)
    MsgBox ifile
     
    Line Input #ifile, Laligne
     
     
    Loop
     
     
    Close #ifile
     
    End Sub
    Avec ce code j'ai toujours le meme probleme...

    Le fichier txt commence par ça
    Creation Date: 1/12/2012 13:06:49  ÞÒ|ûã@ ÞÒ|ûã@    … Ö& ª; 9 ©9 .; 8; Æ& \=    $ Liaison
    Et un mgsbox sur la ligne donne uniquement
    Creation Date: 1/12/2012 13:06:49
    au lieu de
    Creation Date: 1/12/2012 13:06:49  ÞÒ|ûã@ ÞÒ|ûã@    … Ö& ª; 9 ©9 .; 8; Æ& \=    $ Liaison

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 066
    Points : 17 092
    Points
    17 092
    Par défaut
    Salut
    Comme je l'écrivais dans mon dernier post, il faut ouvrir en mode Binary
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Command1_Click()
    Dim Input_file As String, Laligne As String, StrFichier As String
    Dim ifile As Integer
     
    ifile = FreeFile
     
    Input_file = "c:\test.txt"
    Open Input_file For Binary As ifile
    Do While Not EOF(ifile)
        Input #ifile, Laligne
        StrFichier = StrFichier & Laligne & vbCrLf
    Loop
    Close #ifile
    'MsgBox StrFichier
    Text1.Text = StrFichier
    End Sub
    Pour l'exemple, test.txt contient 2 lignes.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    A ProgElect,
    ton code proposé peut provoquer l'erreur d'exécution 62:
    "L"entrée dépasse la fin de fichier"
    (je l"ai eue en test sur un fichier texte)
    alors je proposerai une petite modification à ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Command1_Click()
     
    Dim Input_file As String, Laligne As String, StrFichier As String
    Dim ifile As Integer
    Dim noctet As String
     
    ifile = FreeFile
    Input_file = "c:\test.txt"
    noctet = FileLen(Input_file)           'nombre d'octets du fichier
     
    Open Input_file For Binary As ifile
    StrFichier = String(noctet, " ")
    Get #ifile, 1, StrFichier                 'lecture à partir du 1er octet jusque la fin           
    Close #ifile
    'MsgBox StrFichier
    Text1.Text = StrFichier
    End Sub

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Si ton fichier n'est pas trop volumineux , tu peux le lire d'un bloc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function LitFichier(sNomFic As String) As String
    Dim Contenu As String
    Dim FileNum As Integer
     
    Contenu = ""
    FileNum = FreeFile          'Numéro pour ouverture du fichier
    If Dir(sNomFic) <> "" Then             'Ne traite que si le fichier existe
        Contenu = Space(FileLen(sNomFic))  'dimmensionne la variable à la taille du fichier
        Open sNomFic For Binary As FileNum 'ouvre le fichier
        Get FileNum, , Contenu             'réccupère tout le contenu du fichier
        Close FileNum                      'ferme le fichier
    End If
    LitFichier = Contenu
    End Function
     
    Private Sub Command1_Click()
    MsgBox (LitFichier("D:\data\txt & bin.txt")) ' test avec caractère bizarre ok
    End Sub
    Après tu fait un split sur le saut de ligne et tu peux traiter chaque ligne à ta guise.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/04/2013, 15h16
  2. Lire un fichier .TXT en donnant une URL
    Par Matt2094 dans le forum Langage
    Réponses: 9
    Dernier message: 03/05/2006, 15h35
  3. Lire un fichier txt par http (C sous Linux)
    Par sleg dans le forum Réseau
    Réponses: 4
    Dernier message: 18/10/2005, 12h07
  4. Réponses: 4
    Dernier message: 05/10/2004, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo