écrire/lire ds 1 fichier texte existant...

tomcouc Messages postés 5 Date d'inscription mercredi 16 janvier 2002 Statut Membre Dernière intervention 18 janvier 2002 - 16 janv. 2002 à 18:34
Makabey Messages postés 152 Date d'inscription mercredi 27 juin 2001 Statut Membre Dernière intervention 11 juillet 2002 - 19 janv. 2002 à 03:55
comment écrire dans un fichier texte existant sans effacer les lignes déjà écrites. Par ex, si à la ligne 1 et 2, il est deja ecrit quelque chose, alors on écrit à la ligne 3...

2e chose : comment lire une chaine de caractères dans un fichier texte à un endroit précis
par ex, lire les caractères situés entre "mot1" et "mot3", soit "mot2"

je vous remercie d'avance pr l'aide que vs m'apporterez...

;-)

3 réponses

Makabey Messages postés 152 Date d'inscription mercredi 27 juin 2001 Statut Membre Dernière intervention 11 juillet 2002 1
17 janv. 2002 à 04:40
1. Pour ajouter à la fin, utilise le mode Append de la fonction Open

2. Pour ta recherche, tu pourrais lire tout le fichier dans une variable String (en supposant qu'il n'est pas trop gros, sinon tu devras le faire par bloc pour éviter que ça prenne trop de mémoire et/ou de temps)

Ensuite utilise InStr pour rechercher une sous-chaine et ensuite une seconde fois InStr pour ta chaine de fin, qqch comme:
(devrait afficher "blablamot2blibli" dans la fenêtre immédiate de VB)

Dim iPosD1 As Integer
Dim iPosD2 As Integer
Dim chaine1 As String
Dim chD1 As String
Dim chD2 As String
Dim ChaineFin As String

chaine1 = "mot1blablamot2bliblimot3"
chD1 = "mot1"
chD2 = "mot3"
iPosD1 = InStr(1, chaine1, chD1)
iPosD2 = InStr(iPosD1 + Len(chD1), chaine1, chD2)
ChaineFin = Mid$(chaine1, iPosD1 + Len(chD1), iPosD2 - (iPosD1 + Len(chD1)))
Debug.Print ChaineFin
0
tomcouc Messages postés 5 Date d'inscription mercredi 16 janvier 2002 Statut Membre Dernière intervention 18 janvier 2002
17 janv. 2002 à 16:22
1. ok pr le append

2.je n'arrive pas à mettre en pratique ton explication avec mon fameux fichier texte
en fait la chaine1 devrait etre tout le contenu de mon fichier

par ex, voici le contenu du fichier :

aaa
bbb
ccc
ddd

donc j'ouvre le fichier :
open "c:\essai.txt" for binary access read lock read as #1

maintenant je veux lire ds mon fichier(chaine1) la chaine entre aaa et ddd, je veux que ça affiche "bbbccc"

voilà...

merci pr ton aide
0
Makabey Messages postés 152 Date d'inscription mercredi 27 juin 2001 Statut Membre Dernière intervention 11 juillet 2002 1
19 janv. 2002 à 03:55
Essai ceci dans un bouton:
Private Sub Command1_Click()
  Dim NumFich As Integer
  Dim Tampon As String
  Dim iPosD1 As Integer
  Dim iPosD2 As Integer
  Dim PremiereChaineRch As String
  Dim SecondeChaineRch As String
  Dim ChaineFin As String

  NumFich = FreeFile
  Open "c:\windows\desktop\x.txt" For Binary Access Read Lock Read As #NumFich
  'Input #NumFich, Tampon
  Tampon = Input(LOF(NumFich), #NumFich)
  Close #NumFich
  
  Debug.Print Tampon
  
  PremiereChaineRch = "aaa"
  SecondeChaineRch = "ddd"
  iPosD1 = InStr(1, Tampon, PremiereChaineRch)
  If (iPosD1 > 0) Then  'Si "aaa" trouvé
      iPosD2 = InStr(iPosD1 + Len(PremiereChaineRch), Tampon, SecondeChaineRch)
      If (iPosD2 > 0) Then
          ChaineFin = Mid$(Tampon, iPosD1 + Len(PremiereChaineRch), iPosD2 - (iPosD1 + Len(PremiereChaineRch)))
          ChaineFin = Replace(ChaineFin, vbCrLf, "")
          Debug.Print ChaineFin
        Else
          MsgBox "Impossible de trouver la chaine de fin d'extraction..."
      End If
    Else
      MsgBox "Impossible de trouver la chaine de début d'extraction..."
  End If
End Sub
0
Rejoignez-nous