GetBetween Function avec des fichiers massives [Résolu]

Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Dernière intervention
25 mai 2012
- - Dernière réponse : MiharbiDoNo
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Dernière intervention
25 mai 2012
- 5 juil. 2010 à 17:43
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.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Dernière intervention
25 mai 2012
3
Merci
sayé c fait ^^

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MiharbiDoNo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.