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 :

Ecriture et lecture dans un fichier


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Ecriture et lecture dans un fichier
    Je voudrais ecrire dans un fichier puis lire ce qui a été écrit. J'écris dans le fichier mais la fonction de lecture me renvois toujours du vide.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Dim fichiers As String, i As Long,erreurs as integer
    fichiers = "c:\test00"
    i=20
    tab_var(0) = "1"
    tab_var(1) = "2"
    tab_var(2) = "3"
    ecriture_string fichiers, tab_var, i, erreurs
    tab_var(0) = ""
    tab_var(1) = ""   'Je vide var(0) et var(1) pour m'assurer du resultat de la lecture
    lecture_string fichiers, tab_var, i, erreurs
    MsgBox tab_var(0)
    MsgBox tab_var(1)
     
    Public Sub ecriture_string(ByVal fichier$, ByRef tableau() As String, num_enreg As Long, erreurs As Integer)
      On Error GoTo erreur
      Open fichier For Binary As #1 Len = 9000   
      Put #1, num_enreg, tableau
      Close #1
      erreurs = 0
      Exit Sub
    erreur:
    MsgBox "erreur"
    erreurs = 1
    Close #1
    End Sub
     
    Public Sub lecture_string(ByVal fichier$, ByRef tableau() As String, num_enreg As Long, erreurs As Integer)
      On Error Resume Next
       Open fichier For Binary As #1 Len = 4096
       Get #1, num_enreg, tableau
       Close #1
        erreurs = 0
        Exit Sub
    End Sub

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    J'ai trouvé dans le forum que les fichiers binary ne fonctionne pas en numero d'enregistrement mais en taille d'enregistrement. Je voudrais recuperer une ligne à la position 3 (3 eme enregistrement) dans un tableau?
    Est ce que le mode random aussi ne fonctionne pas avec les numeros d'enregistrement??
    Merci de votre aide

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
    ' je n'ai pas vu la déclaration de ton tableau
    Dim tab_var(0 To 2) As String
    
    Private Sub Action_Click()
        Dim fichiers As String, i As Long, erreurs As Integer
        '
        fichiers = "c:\test00"
        i = 20
        tab_var(0) = "1"
        tab_var(1) = "2"
        tab_var(2) = "3"
        '
        ecriture_string fichiers, tab_var, i, erreurs
        '
        tab_var(0) = ""
        tab_var(1) = "" 'Je vide var(0) et var(1) pour m'assurer du resultat de la lecture
        '
        lecture_string fichiers, tab_var, i, erreurs
        MsgBox tab_var(0)
        MsgBox tab_var(1)
    End Sub
    
    Public Sub ecriture_string(ByVal fichier$, ByRef tableau() As String, num_enreg As Long, erreurs As Integer)
        On Error GoTo erreur
        '
        Open fichier For Binary As #1 Len = 9000
        Put #1, num_enreg, tableau
        Close #1
        erreurs = 0
        Exit Sub
    erreur:
        MsgBox "erreur"
        erreurs = 1
        Close #1
    End Sub
    
    Public Sub lecture_string(ByVal fichier$, ByRef tableau() As String, num_enreg As Long, erreurs As Integer)
        On Error Resume Next
        '
        Open fichier For Binary As #1 Len = 4096
        Get #1, num_enreg, tableau
        Close #1
        erreurs = 0
        Exit Sub
    End Sub
    Ton code fonctionne (en ajoutant la déclaration du tableau).

    Je ne comprends pas trop ta gestion des erreurs, pourquoi passer cette variable en argument ?

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Le probleme n'est pas la déclaration de tableau (c'est juste un oubli de ma part au moment de rediger le message voila tout). Pour l'instant je m'occupe pas trop de la gestion des erreurs. Mon probleme est que j'arrive à écrire dans un fichier binaire mais pas à lire l'info. Si tu executes le programme tu verras que lors de la lecture tab_var(0), tab_var(1) sont vides donc il ya pas eu recuperation des données à partir du fichier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Si tu executes le programme tu verras que lors de la lecture tab_var(0), tab_var(1) sont vides donc il ya pas eu recuperation des données à partir du fichier
    Eh bien justement, j'ai exécuté le programme : le tableau se vide une fois le fichier texte créé... et se remplit à la lecture de celui-ci. Le contenu s'affiche alors correctement via MsgBox... je ne vois pas ce qui ne fonctionne pas.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Aprés la lecture tab_var(0) et tab_var(1) sont vides

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Tu veux dire qu'à ce niveau...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        lecture_string fichiers, tab_var, i, erreurs
        MsgBox tab_var(0)
        MsgBox tab_var(1)
    ... les MsgBox ne t'affichent rien ?

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Oui c'est ca aprés la lecture

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Ah... car chez moi, cela fonctionne très bien, j'ai bien "1" et "2" qui s'affichent dans les MsgBox...

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je suis d'accors sauf que si tu fais deux ecritures une à la ligne i et une à la ligne i+5 tu auras des données erronées. Comme si l'accés au fichie rne se fait pas par enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ecriture_string1 fichiers, tab_var, i, erreurs
    ecriture_string1 fichiers, tab_var, i + 5, erreurs

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    En général, on utilise les fichiers binaire lorsqu'on a affaire à des fichiers structurés (table de données, image...). La structure doit donc être connue et déclarée au besoin. La taille de ces données en octêts doit être toujours de la même longueur (sauf exceptions... pas faciles àgérer).

    Syncèrement, je ne vois pas trop où tu veux en venir avec un tableau de string de longeur dynamique ni comment tu fais pour déterminer une taille de fichier pour l'écriture et une autre taille pour la lecture.

    Fais une recherche sur développez ou sur google pour te trouver un bon tutoriel sur les fichiers binaires...

  12. #12
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Personellement, pour ce type d'information, j'utiliserais plutot des fchiers de type random

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Option Explicit
    Private Type Enregistrement
      Var1 As String * 10
      Var2 As String * 10
      Var3 As String * 10
    End Type
     
    Private Sub cmdTest_Click()
      'ecriture de deux enregistrements
      'en position 1 et en position 10
      Dim Rec As Enregistrement
      Rec.Var1 = "1-1"
      Rec.Var2 = "1-2"
      Rec.Var3 = "1-3"
      Ecriture "c:\test00.dat", Rec, 1
      Rec.Var1 = "10-1"
      Rec.Var2 = "10-2"
      Rec.Var3 = "10-3"
      Ecriture "c:\test00.dat", Rec, 10
      'lecture de l'enreg 1
      Rec = Lecture("c:\test00.dat", 1)
      MsgBox Rec.Var1 & vbTab & Rec.Var2 & Rec.Var3
    End Sub
     
    Private Sub Ecriture(Fichier As String, Rec As Enregistrement, NumEnreg As Long)
      Dim hFich As Integer
      hFich = FreeFile
      Open Fichier For Random As #hFich Len = Len(Rec)
        Put #hFich, NumEnreg, Rec
      Close #hFich
    End Sub
     
    Private Function Lecture(Fichier As String, NumEnreg As Long) As Enregistrement
      Dim Rec As Enregistrement
      Dim hFich As Integer
      hFich = FreeFile
      Open Fichier For Random As #hFich Len = Len(Rec)
        Get #hFich, NumEnreg, Rec
      Close #hFich
      Lecture = Rec
    End Function
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  13. #13
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    si le probleme est résolu, ne pas oublier de tagger le topic comme résolu
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

Discussions similaires

  1. Ecriture / Lecture dans un fichier Caché
    Par liavart dans le forum Général Java
    Réponses: 0
    Dernier message: 04/11/2009, 19h17
  2. Réponses: 7
    Dernier message: 06/02/2007, 14h27
  3. ecriture lecture dans un fichier
    Par maz dans le forum C
    Réponses: 3
    Dernier message: 19/10/2006, 12h21

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