Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VB 6 et antérieur
VB 6 et antérieur Visual basic 6 et versions antérieures. Avant de poster -> La FAQ VB6, Les tutoriels VB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/01/2013, 22h07   #1
Mut
Membre confirmé
 
Avatar de Mut
 
Homme
Inscription : mars 2003
Messages : 870
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 870
Points : 260
Points : 260
Envoyer un message via MSN à Mut
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 :
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
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 22h22   #2
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 112
Points : 5 112
Envoyer un message via MSN à ProgElecT
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 :
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
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 22h33   #3
Mut
Membre confirmé
 
Avatar de Mut
 
Homme
Inscription : mars 2003
Messages : 870
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 870
Points : 260
Points : 260
Envoyer un message via MSN à Mut
Autant pour moi...j'ai oublié de mettre les variables dans le code

Code :
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 ?
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 22h43   #4
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 112
Points : 5 112
Envoyer un message via MSN à ProgElecT
Il faut donc ouvrir le fichier en mode Binary.
Pour plus d'informations regarder dans MSDN rubrique Input, fonction et Input #, instruction.
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 22h44   #5
Mut
Membre confirmé
 
Avatar de Mut
 
Homme
Inscription : mars 2003
Messages : 870
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : mars 2003
Messages : 870
Points : 260
Points : 260
Envoyer un message via MSN à Mut
Code :
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
Citation:
Creation Date: 1/12/2012 13:06:49  ÞÒ|ûã@ ÞÒ|ûã@    … Ö& ª; 9 ©9 .; 8; Æ& \=    $ Liaison
Et un mgsbox sur la ligne donne uniquement
Citation:
Creation Date: 1/12/2012 13:06:49
au lieu de
Citation:
Creation Date: 1/12/2012 13:06:49  ÞÒ|ûã@ ÞÒ|ûã@    … Ö& ª; 9 ©9 .; 8; Æ& \=    $ Liaison
Mut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 07h25   #6
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 112
Points : 5 112
Envoyer un message via MSN à ProgElecT
Salut
Comme je l'écrivais dans mon dernier post, il faut ouvrir en mode Binary
Code :
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.
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h24   #7
iclic
Membre éprouvé
 
Inscription : décembre 2007
Messages : 454
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 454
Points : 497
Points : 497
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 :
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
iclic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 18h43   #8
rv26t
Membre émérite
 
Hervé
Inscription : janvier 2007
Messages : 593
Détails du profil
Informations personnelles :
Nom : Hervé
Localisation : France

Informations forums :
Inscription : janvier 2007
Messages : 593
Points : 963
Points : 963
Bonjour,

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

Code :
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é.
rv26t est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h44.


 
 
 
 
Partenaires

Hébergement Web