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 :

comment traiter un fichier.txt avec "replace" ?


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut comment traiter un fichier.txt avec "replace" ?
    bonjour
    avant de formuler ma demande , je vous explique ce que je desire faire

    - en partant d'un fichier texte (depart.txt) où j'ai des données en hexa
    exemple :

    70 4D 57 13 49 74 01 47 33 28 49 18 D1 10 22 01
    66 76 47 78 70 00 0F 5F 20 1A 4D 4D 45 20 53 55
    42 49 52 41 4E 4F 20 49 53 41 42 45 4C 4C 45 20
    20 20 20 20 9F 1F 18 36 36 37 36 34 37 30 30 30
    30 30 30 30 30 30 37 38 37 30 30 30 30 30 30
    etc...

    - après traitement en vb , avoir le fichier texte (final.txt)
    exemple:

    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
            ldi r16, $70
            rcall TX_master
            ldi r16, $4D
            rcall TX_master
            ldi r16, $57
            rcall TX_master
            ldi r16, $13
            rcall TX_master
            ldi r16, $49
            rcall TX_master
            ldi r16, $74
            rcall TX_master
            ldi r16, $01
            rcall TX_master
            etc...
            etc...
    -------------------------
    il faut remplacer dans le fichier départ , chaque espace par :

    en vb j'ai ces routines


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command3_Click()
            CRLF$ = Chr$(13) + Chr$(10)
     
     
          Invite$ = "entrez le texte à traiter"
          InviteFinale$ = InputBox$(Invite$)
          Text1.Text = InviteFinale$
     
    End Sub--
    ---------------------------------



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Command1_Click()
    Dim TestString As String
     
    TestString = InviteFinale$
     
    Dim aString As String
    Dim lolo As String
            CRLF$ = Chr$(13) + Chr$(10)
     lolo = CRLF$ & "        rcall TX_master" & CRLF$ & "        ldi r16, $"
     aString = Replace(TestString, " ", lolo)
     Text1.Text = aString
    End Sub
    --------------------

    je débute en vb6 , a vrai dire il y a longtemp que je débute mais ca avance pas trop vite, suis pas trop fort

    mon problème c'est que je fais une partie en manuel, avec des copier/coller , donc si vous pouviez m'aider
    j'accepte toute idée

  2. #2
    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,

    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 Lireligne As String, partie As String
    Dim Enreg1 As String, Enreg2 As String
    Dim i2 As Integer, i3 As Integer
    Dim lgligne As Integer, numbuf1 As Integer, numbuf2 As Integer
     
     'ouvrir le fichier texte
     numbuf1 = FreeFile
     'changer le chemin et nom du fichier suivant...
     Open "C:\Cor\Fic1.txt" For Input As #numbuf1
     numbuf2 = FreeFile
    'changer le chemin et nom du fichier suivant...
     Open "C:\Cor\resultat.txt" For Output As #numbuf2
     
     Do While Not EOF(numbuf1)
          'lire la 1èreligne
          Input #numbuf1, Lireligne
          lgligne = Len(Lireligne)
          Lireligne = Lireligne & " "
          'initialiser les variables
          i3 = 1
          i2 = 0
          'traitement de la ligne
          Do While i2 < lgligne
              i2 = InStr(i3, Lireligne, " ")
              partie = Mid(Lireligne, i3, i2 - i3)
              i3 = i2 + 1
              Enreg1 = "        ldi r16, $" & partie
              Enreg2 = "        rcall TX_master"
              'ecrire dans le 2e fichier texte
              Print #numbuf2, Enreg1
              Print #numbuf2, Enreg2
          Loop
     Loop
     Close
    J'ai testé

    A+

  3. #3
    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,

    Ou 2e manière en appliquant la fonction 'split

    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
     
    Dim Lireligne As String, partie As String
    Dim Enreg1 As String, Enreg2 As String
    Dim i3 As Integer
    Dim numbuf1 As Integer, numbuf2 As Integer
    Dim Part() As String
     
     'ouvrir le fichier texte
     numbuf1 = FreeFile
     Open "C:\Cor\depart.txt" For Input As #numbuf1
     numbuf2 = FreeFile
     Open "C:\Cor\resultat.txt" For Output As #numbuf2
     Do While Not EOF(numbuf1)
          'lire les enregistrements
          Input #numbuf1, Lireligne
          Part() = Split(Lireligne)
          For i3 = 1 To UBound(Part)
            partie = Part(i3)
            Enreg1 = "        ldi r16, $" & partie
              Enreg2 = "        rcall TX_master"
              'ecrire dans le 2e fichier texte
              Print #numbuf2, Enreg1
              Print #numbuf2, Enreg2
          Next
     Loop
     Close

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour
    merci iclic, c'est exactement ce que je voulais realiser, tu me fais economiser
    beaucoup de temp en manuel.
    encore merci de ton aide, et c'est un peu tot, mais bonnes fetes
    a+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour iclic
    la derniere fois tu m'as vraiment dépanné , et donc je fais encore appelle à toi
    mon prob ,cette fois c'est de traiter un fichier .hex que j'ai converti en .txt
    mais j'ai en fin de ligne ,l'octet de contrôle de ligne à enlever , et en début de ligne, les 9 premiers caractères.
    -----
    au depart j'ai un fichier hex que j'ai mis en txt comme ceci

    :10004000021C07B270059F08020002900000B20374
    :100050001C006CC300B2031CC3B27081C0908190BD
    :1000600091877312ABBC3554D6B950FCF3358B393C
    :100070000369A47EF07764C1086B17B5E594AF50AF
    :10008000FCF60920BEF27E8E8EC0E18A6662EA4DE1
    :10009000BCB5B779DE4271728362FF8FA3B5E7EB1F

    ce fichier contient en fin de ligne l'octet de contrôle, et donc dans un premier temps
    je voudrais enlever tous contrôle en fin de ligne, c'est a dire enlever les 2 dernières lettres


    :10004000021C07B270059F08020002900000B20374
    :10004000021C07B270059F08020002900000B203 74 <- enlever

    - ensuite enlever en debut de ligne, à partir des : les 9 chiffres qui suivent
    (:10004000)
    :10004000021C07B270059F08020002900000B203
    :10004000 021C07B270059F08020002900000B203

    - comme c'est en hex , intercaler un espace après 2 lettres de manière a avoir des octets,
    ex:
    021C07B270059F08020002900000B203
    02 1C 07 B2 70 05 9F 08 02 00 02 90 00 00 B2 03

    - et si possible remplacer tous les
    9000 ou 90 00
    par
    (CRLF$ = Chr$(13) + Chr$(10) ), pour mettre le 90 00 en début de ligne suivante

    90 00
    -------- (le séparateur)


    exemple:
    02 1C 07 B2 70 05 9F 08 02 00 02 90 00 00 B2 03
    donne:
    02 1C 07 B2 70 05 9F 08 02 00 02
    90 00
    ----------------
    00 B2 03


    cela m'enlèverait une épine du pied, car je fais tout à la main, et je commence à avoir
    la vue fatiguée

  6. #6
    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,

    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
     
    Dim Valfic As String,Inter as String,Resultat as String
    Dim i As Integer
     
    Valfic = ":10004000021C07B270059F08020002900000B20374"
    Valfic = Mid(Valfic, 10, Len(Valfic) - (10 - 1) - 2)
     
    For i = 1 To Len(Valfic) Step 2
       Inter = Mid(Valfic, i, 2)
       Inter = Inter & " "
       Resultat = Resultat & Inter
    Next
    Resultat = Left(Resultat, Len(Resultat) - 1)
    separe = InStr(Resultat, "90 00")
    Inter = Mid(Resultat, separe, Len(Resultat) - (separe - 1))
    Resultat = Left(Resultat, separe - 1)
    Resultat = Resultat & vbCrLf & Inter

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour iclic
    merci de ta reponse, je suis en train de l'incorporer à mon programme. j'ai pas
    tout a fait fini, mais tu m'as encore bien aidé
    a+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour iclic
    c'est encore moi

    j'ai un fichier "départ.txt" que je veux traiter car il a des lignes
    qui depasse 49 (16 octets maxi) , et donc "couper" ou spliter , mais je me mélange.




    exemple:
    ------------------
    c1 xx xx xx xx xx
    yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy
    yy yy yy yy yy yy
    yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy
    yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy yy
    yy yy yy yy yy yy yy yy yy yy yy yy yy yy
    90 00
    ----------------
    etc.....

    merci d'avance

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne = left (ligne , 49) ...
    le reste doit-il être garder ou supprimer?

    Mais ai-je bien compris ta question?


    ps: Normalement une seule question par post

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    re bonjour


    si la ligne depasse un len>49 il faut la decouper en troncons de 49, c'est a dire
    des lignes de 16 octets maxi, cela me permet de verifier rapidement si le compte est bon

    merci

    ps: excuse moi, mais comme cela fait toujours partie de mon programme, je
    pensais que je pouvais l'ajouter, sans ouvrir un autre sujet

  11. #11
    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
    Alors un test avec une boucle tant que longueur > 49

    puis une autre variable
    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
     
    autrevariable=ligne
     
    Do while len( autrevariable) > 49
     
         autrevariable =Mid(ligne,50, len (ligne - 49 )
     
         ligne = left(liggne,49)
     
        'ecrire ligne dans le fichier
     
        ligne = autrevariable '<******** IMPORTANT *******
     
    Loop
     
        'ecrire autrevariable dans le fichier
    A tester ...

    A+

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour iclic

    j'ai fait une procedure x (avec clientb.txt vers clienta.txt)
    et une procedure y (avec clienta.txt vers clientb.txt)

    et j'appelle ces 2 procedures tant que le len de la ligne est sup à 49

    c'est tiré par les cheveux mais ca marche, et ca me depanne

    j'ai aussi un petit prob, dans mon progamme , a chaque procedure je declare les variables, est-ce que je peux les declarer une seule fois en les mettant publiques? et a quel endroit? je me rapelle plus.

    merci a toi




    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
      '   16 octets par ligne
    '---  passage 1
         'ouvrir le fichier texte
     numbuf1 = FreeFile
     Open "C:\baba\travail\clientb.txt" For Input As #numbuf1
      numbuf2 = FreeFile
      Open "C:\baba\travail\clienta.txt" For Output As #numbuf2
     
     
    Do While Not EOF(numbuf1)
          'lire la 1èreligne
          Input #numbuf1, Lireligne
          ligne = Lireligne
          mypos = Len(ligne)
          mypos1 = mypos - 48
     
     If Len(ligne) > 49 Then
        Valfich1 = Mid(ligne, 49, mypos1)
        Valfich2 = Left(ligne, 48)
     
              Print #numbuf2, Valfich2
              Print #numbuf2, Valfich1
       Else
            Print #numbuf2, ligne
       End If
       Loop
    Close

  13. #13
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonsoir,

    j'ai aussi un petit prob, dans mon progamme , a chaque procedure je declare les variables, est-ce que je peux les declarer une seule fois en les mettant publiques? et a quel endroit? je me rapelle plus.
    Tu peux les mettre en haut en dehors de la procédure ce seront alors des variables global a tout le module/feuille ...

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut pasrico,

    j'ai essayé de t'envoyer un MP mais ça ne marche pas, juste pour info, quel logiciel as tu utilisé pour envoyer les commandes et recevoir le petit morceau de dump que tu as posté (celui d'Isabelle ).

    Merci de me renseigner c'est cool.

Discussions similaires

  1. Traiter un fichier .txt avec plusieurs colonnes
    Par degio1er dans le forum C#
    Réponses: 7
    Dernier message: 13/09/2014, 00h16
  2. Débutant, Comment traiter un fichier txt (csv)?
    Par djodjo2050 dans le forum VB.NET
    Réponses: 2
    Dernier message: 26/10/2007, 17h41
  3. Réponses: 2
    Dernier message: 13/03/2007, 11h19

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