GetBetween Function avec des fichiers massives [Résolu]

Signaler
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012
-
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012
-
bonjour,
je connais une fonction qui retourne ce qu'il'ya entre deux string, dans un string plus long,
Ex: Getbetween("abcde123","bc",12") retourne "de"
cad ce qu'ilya etre string2 et string3, dans string1 (j'espere qui je me debrbouille en m'expliquant :p)

mais cette methode va retourné un erreur si la chaine est trop longue. j'ai pensé alors a faire une fonction similaire, mais a travers les fichiers:

IOBetween(SourcePath,DestinationPath,Binf,Bsup)

cad, un streamReader va lire le Fichier Dans Sourcepath, puis lire justqu'a trouver Binf, si trouvé, ecrire dans un streamWriter Jusqu'a trouver Bsup.... voila quesque j'ai jusqu'a maintenant :

    Sub IOBetween(ByVal Source As String, ByVal Destination As String, ByVal Binf As String, ByVal Bsup As String)
        Dim Streamreader As New IO.StreamReader(Source, System.Text.Encoding.Default)
        Dim CurrentChar() As Char
        If Binf.Length > Bsup.Length Then
            CurrentChar = Space(Binf.Length)
        Else
            CurrentChar = Space(Bsup.Length)
        End If
        Dim p As Integer = 0
        Do Until (p = (Binf.Length)) Or (Streamreader.EndOfStream)
            Streamreader.Read(CurrentChar, p, 1)
            If CurrentChar(p) = Binf(p) Then
                p += 1
            Else
                p = 0
            End If
        Loop
        Dim Streamwriter As New IO.StreamWriter(Destination, True, System.Text.Encoding.Default)
        p = 0
        Do Until p = Bsup.Length Or Streamreader.EndOfStream
            Streamreader.Read(CurrentChar, p, 1)
            If Bsup(p) = CurrentChar(p) Then
                p += 1
            Else
                For i = 0 To p
                    Streamwriter.Write(CurrentChar(i))
                Next
                p = 0
            End If
        Loop
        Streamreader.Dispose()
        Streamreader.Close()
        Streamwriter.Flush()
        Streamwriter.Dispose()
        Streamwriter.Close()
    End Sub


j'ai fait un tournage a la main, sa semble que c bien fait. mais quand jl'essai avec de different type de fichier, sa donne un resultat inattandu...
veuillez m'excuser si c'est un peu long, mais je suis sure qu'il ya une faille quelque part... Merci.

1 réponse

Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012

sayé c fait ^^