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 :

lecture-écriture dans un fichier text


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut lecture-écriture dans un fichier text
    bonjour à tous

    je veux faire une application dans laquelle je dois enregistrer des données (correspondant à des champs records) dans un fichier text (une alternative aux BD avec lesquelles j'avais des problèmes).

    pour commencer j'ai consulté le FAQ et j'ai trouvé ce programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Const ForWriting = 2
       Dim fso, f   
     
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true)
       f.write("Salut")
    le problème est que ce code efface le contenu de fichier et y met la nouvelle chaine de caractères. J'ai donc quelques questions;

    1/ Comment faire pour ajouter des lignes (ligne par ligne ) sans effacer l'ancien contenu

    2/ est possible d'accéder (en lecture et écriture) à une ligne donnée par indice

    3/ Si vous connaissez un lien qui peut m'être utile, je serais reconnaissant.

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 627
    Points
    16 627
    Par défaut
    1/ Comment faire pour ajouter des lignes (ligne par ligne ) sans effacer l'ancien contenu
    Tu écris Open dans ton code, tu mes le curseur dessus, puis F1 pour avoir des informations via MSDN.
    Si tu n'as pas MSDN installé (la bible que devrait avoir tout programmateur), tu peux le charger ici MSDN en Français

    2/ est possible d'accéder (en lecture et écriture) à une ligne donnée par indice
    Non, tu peux lire mais pas écrire en même temps, par contre tu peux faire 2 ouvertures, un en lecture, l'autre en écriture (sous entendu sous un N° différent ((FreeFile), filenumber)

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    1/ je vais voir le help

    2/ est possible d'accéder (en lecture et écriture) à une ligne donnée par indice
    peut être je me suis mal exprimé, je veux savoir comment accéder à une ligne (en lecture ou en écriture), une chose comme T(i) dans un tableau ou (avec excel)


  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 627
    Points
    16 627
    Par défaut
    2 solutions au moins.
    1° lire ligne par ligne jusqu'à la ligne voulue (légèrement long suivant le nombre de ligne)
    2° ouvrir le fichier en récupérant la totalité dans une variable String (plus rapide), puis faire un Split dans une variable tableau, de cette dernière variable tableau appeler le n élément.
    Je peu développer si tu es intéressé par l'une ou l'autre des solutions

    MOTIF DE L'EDIT:
    Parlant d'Excel, dans la Faq VB6, Rechercher "Excel", plusieurs reponses, dont une qui pourrait correspondre à ton besoin Comment modifier un classeur ?

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    Je peu développer si tu es intéressé par l'une ou l'autre des solutions
    je te remercie vivement. Je peux m'en charger, mais ne posera t-il pas de problèmes de charger la RAM par un tableau de quelques dizaines de milliers de valeurs

  6. #6
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 627
    Points
    16 627
    Par défaut
    ....
    mais ne posera t-il pas de problèmes de charger la RAM par un tableau de quelques dizaines de milliers de valeurs
    Maintenant les systèmes on souvent suffisamment de mémoires, voire Windows utilisera le disque dur pour compléter.
    Le principe
    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
    Dim Msg As String
    Dim NumFich As Integer
    Dim CheminNomFichier As String
    Dim DecoupeContenuLg() As String
    Dim T As Integer
    Msg = ""
    CheminNomFichier = "" '<== adapter
    '************** en lecture ********************************************
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    Msg = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Exit Sub 'Unload Me
    End If
    'création du tableau "DecoupeContenuLg", chaque index du tableau correspond à une ligne du fichier
    DecoupeContenuLg = Split(Msg$, vbCrLf)
    'DecoupeContenuLg(9) = ligne 10 du fichier
    '**************fini en lecture ********************************************
    'DecoupeContenuLg(9) peut être modifier, voir "supprimer" (DecoupeContenuLg(9)="")
     
    '************** réouverture en ecriture pour modification/actualisation ********************************************
    NumFich = FreeFile
    Open CheminNomFichier For Output As #NumFich
    'boucle sur le tableau
    For T = 0 To UBound(DecoupeContenuLg)
        If DecoupeContenuLg(T) <> "" And T = 9 Then
            Print #NumFich, DecoupeContenuLg(T)
            Else
            Print #NumFich, DecoupeContenuLg(T)
        End If
    Next T
    Close #NumFich
    '************** fini modification/actualisation ********************************************
    Mais si tu fais à partir d'un fichier excel, regarde dans mon précédent message (j'ai réédité)

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    Merci beaucoup

    c'est bien

    A+

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    bonjour

    maintenant je veux enregistrer mes données de façon structurée (comme un tableau d'excel). J'ai consulté MSDN (Utilisation de l'accès aléatoire aux fichiers)
    j'ai y trouvé des codes montrant la manipulation des records, le problème est que ces derniers se sont enregistrés dans le fichier sous forme de
     =
    ÉBô *¶ã@  ff`Bè *¶ã@
    donc ce que je cherche est d'avoir un tableau contenant les champs et les enregistrements correspondants (une chose semblable à un tableau).
    Veuillez me diriger vers le bon chemin;
    Utiliser les instructions présentées là-dessous et gérer les espaces (" ") moi même (qui tout à fait possible) ou se contenter des enregistrements avec accès aléatoire, ou peut être existe-elle une autre méthode

    Merci d'avance

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par guefrachi Voir le message
    ....
    j'ai y trouvé des codes montrant la manipulation des records, le problème est que ces derniers se sont enregistrés dans le fichier sous forme de
    ...
    c'est quoi le but de visualiser les enregistrement avec un éditeur de texte ..? ou avec ton programme ?

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    pour faire du copier coller (vers des variables matlab par exemple) ou vers excel
    (SVP ne me dites pas pourquoi ne pas écrire directement dans excel...).

    et surtout ce fichier va être utilisé par un programme delphi qui lit les données enregistrées et les visualise graphiquement (MSChart). Donc j'ai besoin de quelques chose qui peut être "comprise" par les deux logiciels

  11. #11
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    Salut

    pour la la méthode de ProgElect

    est il possible de libérer la prtie RAM allouée au tableau "DecoupeContenuLg" après son utilisation?, une chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set DecoupeContenuLg=nothing

  12. #12
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 105
    Points : 16 627
    Points
    16 627
    Par défaut
    Si la déclaration de la variable DecoupeContenuLg est dans la procédure de lecture du fichier, dés que tu quittes celle ci la mémoire est libérée, si par contre elle est déclarée dans un module (comme public) ou dans la partie déclaration du Form, faire Redim DecoupeContenuLg(0).

  13. #13
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 177
    Points : 98
    Points
    98
    Par défaut
    elle est déclarée dans une procédure bouton_clic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command4_Click()
    Dim DecoupeContenuLg() As String
    .....
    .....
    end sub

Discussions similaires

  1. lecture / écriture dans des fichiers text
    Par nadir CoCo dans le forum C++
    Réponses: 6
    Dernier message: 28/06/2012, 09h10
  2. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  3. Réponses: 4
    Dernier message: 02/05/2007, 10h41
  4. lecture écriture dans un fichier
    Par poukill dans le forum C++
    Réponses: 9
    Dernier message: 23/05/2006, 11h02
  5. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15

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