Accés binaire : splitteur de fichiers en vb.net

Soyez le premier à donner votre avis sur cette source.

Vue 10 011 fois - Téléchargée 544 fois


Description

Voila, d'habitude j'essaye de ne pas mettre de projets mais juste des procédures ou fonctions, mais apres une petit prise de tete de 20mn sur comment j'allais le présenter, j'ai abandonner pour finalement mettre la beta 1 du projet (le design laissera comprendre à lui seul pkoi "beta 1" lol).

Il y a un .reg qui montre les lignes à écrire pour ajouter le prog au menu contextuel (ceci en prenant en compte que le .exe est copié dans le dossier Winnt/Windows de votre system) ,ce pour ne pas mettre le setup.

J'ai essayer de commenter le code, qui est assez simple mais parfois peut etre un peu fouilli... je repondrais à vos questions avec joie si vous ne comprenez pas qqc .

Si il reste un bug, je m'en excuse, les tests de ses propres applis sont toujours insufisants selon mon patron... :) Prevenez moi si vous en detectez un svp (vous pouvez gueuler si vous voulez)

UPDATE : et ben dis donc....pendant + de 6 mois j'ai laisser une version betement bugger qui "desplittait" mal... un "-1" mal placé qui m'oblige à m'excuser...

Source / Exemple :


Imports System.IO
Imports System
Imports Microsoft.Win32

Public Class Form1
    Inherits System.Windows.Forms.Form

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim args As String
        If hb_inside(Environment.CommandLine, "Bpath ", " Epath") <> "" Then
            args = hb_inside(Environment.CommandLine, "Bpath ", " Epath") 'on check si les arguments contiennent qqc entre Bpath et Epath (ne s'executera que si un fichier est appelé par le menu contextuel, et si vous avez lancer le .reg), si c'est le cas
        Else
            If Environment.GetCommandLineArgs.GetUpperBound(0) >= 1 Then 'si ce n'est pas le cas, on regarde si il y a + de 1 ligne d'arguments
                If IO.File.Exists(Environment.GetCommandLineArgs(1)) Then 'si oui on regarde si la deuxieme ligne est un fichier (ne se passera que si vous glissez un fichier sur le .exe
                    args = Environment.GetCommandLineArgs(1)
                End If
            End If
        End If

        If args <> "" Then 'si on a un fichier sur lequel travailler dans les arguments :
            If IO.File.Exists(args) Then 'on check si le fichier existe

                If LCase(Mid(args, Len(args) - 3, 4)) = ".hbs" Then 'on check si c'est un fichier .hbs (splitté)
                    'si oui alors :
                    Dim chemin1 As String = args
                    Dim nbrfile As Integer = get_nbrfile(chemin1) 'on appele la fonction get_nbrfile qui renvoie le nbre de fichiers splitté du groupe HBS
                    Dim temp As String
                    temp = Mid(chemin1, 1, Len(chemin1) - 4) 'ceci renvoie le nom de fichier d'origine sans le .hbs
                    Dim chemin2(nbrfile) As String 'on creer un tableau à une dimension dont le nbre de cellules est = au nbre de fichiers hbs + 1 (les cellules debutent à 0)
                    Dim i As Integer
                    For i = 1 To nbrfile
                        chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_"))) 'on place les chemins de touts les fichiers splitté grace a cette boucle dans laquel on va remplacer le numero du fichier par tts les numeros du groupe (pas clair...ouais bah...)
                    Next
                    Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
                    'on propose le choix du nom de fichiers à l'utilisateur
                    sf1.Title = "Enregistrer le fichier sous"
                    sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1)
                    sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\"))
                    sf1.ShowDialog()
                    If sf1.FileName = "" Then Exit Sub
                    pathsource2.Text = args

                    'On affiche le nbre de fichiers et la taille du fichier a despliter:
                    lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
                    lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
                    lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"
                    Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
                    Dim lentaille As Integer = tailledesplit.ToString.Length
                    Select Case lentaille
                        Case Is <= 3
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
                        Case Is > 3
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                        Case Is > 6
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                        Case Is > 9
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                    End Select

                    unsplit(nbrfile, chemin2, sf1.FileName) 'on lance la procedure unsplit qui specifie le nbre de fichiers, le tableau contenant les chemins des fichiers du groupe HBS et le chemin de fichier de sortie
                    TabControl1.SelectedTab = Tab2

                Else
                    'si ce n'est pas un fichier .hbs :
                    pathsource.Text = args

                    'On calcul la taille du fichier sources et des "futurs" fichiers .hbs selon la valeur de nbrsplit
                    Dim lnginit As Long = FileLen(pathsource.Text)
                    Dim lngsplit As Long = lnginit / nbrsplit.Value
                    Dim lnglastsplit As Long
                    If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
                    lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))

                    Dim taillesource As Long = FileLen(pathsource.Text)
                    Dim lentaille As Integer = taillesource.ToString.Length

                    'Calcul la taille du fichier source et l'affiche
                    Select Case lentaille
                        Case Is <= 3
                            lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
                        Case Is > 3
                            lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
                        Case Is > 6
                            lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
                        Case Is > 9
                            lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
                    End Select
                    'affiche la taille des "futurs" fichiers splittés
                    lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
                    lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
                End If
            End If
        End If
    End Sub

    Private Sub split(ByVal nbrfile As Integer, ByVal chemin1 As String)
        Dim lnginit As Long
        Dim lngsplit As Long
        Dim lnglastsplit As Long
        Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
        Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin1)) 'on defini donc hb comme "binaryreader" , et on y ouvre le chemin contenu dans la string chemin1
        Dim file_a(FileLen(chemin1)) As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
        Dim i As Integer

        hb.BaseStream.Read(file_a, 0, FileLen(chemin1)) 'on lit le fichier dans les tableau teststr

        'on calcul la tailles des fichiers .hbs selon le nbre de splits demandés
        lnginit = FileLen(chemin1)
        lngsplit = lnginit / nbrfile
        If lngsplit > CDec(lnginit / nbrfile) Then lngsplit += 1
        lnglastsplit = lnginit - (lngsplit * (nbrfile - 1))

        'ecriture des fichiers .hbs, sauf le dernier qui n'aura surement pas la meme taille :
        For i = 0 To nbrfile - 2
            Dim hbwrite As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
            hbwrite.BaseStream.Write(file_a, (i * lngsplit), lngsplit)
            hbwrite.Close()
            hbwrite = Nothing
            Application.DoEvents()
        Next i

        'ecriture maintenant du dernier fichiers hbs, qui doit faire qq octets de moins que les autres, selon la taille du fichier source
        Dim hbwrite2 As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
        hbwrite2.BaseStream.Write(file_a, ((nbrfile - 1) * lngsplit), lnglastsplit)
        hbwrite2.Close()

        Dim splittm As String = ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes"
        MsgBox("Le fichier " & chemin1 & " a été splitté avec succés en " & splittm)
    End Sub

    Private Sub unsplit(ByVal nbrfile As Integer, ByVal chemin2() As String, ByVal chemin1 As String)
        Dim i As Integer
        Dim lngsplit As Long
        Dim file_A() As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
        Dim n As Long
        Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
        For i = 0 To nbrfile - 1 'on lance la boucle le meme nbre de fois qu'il y a de fichiers
            Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin2(i + 1)))
            ReDim file_A(FileLen(chemin2(i + 1)) - 1) 'on redimensionne le tableau de la taille du fichier actuel
            hb.BaseStream.Read(file_A, 0, FileLen(chemin2(i + 1))) 'DEBUG UPDATE !!  'on stocke dans ce tableau TOUTS les bytes du fichier
            Dim fs As FileStream = New FileStream(chemin1, FileMode.OpenOrCreate) 'on defini le filestream
            Dim wr As BinaryWriter = New BinaryWriter(fs) 'on defini wr comme objet d'ecriture binaire
            wr.BaseStream.Seek(0, SeekOrigin.End) 'on defini le pointeur à la fin du fichier cible
            wr.Write(file_A) 'on ecrit le contenu du tableau
            fs.Close() 'on ferme tout
            wr.Close() 'on ferme tout
            hb.Close() 'on ferme tout
        Next i
        MsgBox("Effectué en " & ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes")
    End Sub

    Function get_nbrfile(ByVal firstpath As String) As Integer
        'fonction qui renvoie le nombre de fichiers d'un groupe à partir du chemin d'un fichier hbs
        Dim temp As String
        temp = Mid(firstpath, 1, Len(firstpath) - 4)
        Dim pos As Integer
        pos = InStrRev(temp, "_") + 1
        Return CInt(Mid(temp, pos))
    End Function

    Function get_nbrcurrentfile(ByVal firstpath As String) As Integer
        'fonction qui renvoie le numero d'un fichier hbs a partir de son chemin
        Dim temp As String
        temp = Mid(firstpath, 1, Len(firstpath) - 4)
        Dim pos(1) As Integer
        pos(0) = InStrRev(temp, ".")
        pos(1) = InStrRev(temp, "_")
        Return CInt(Mid(firstpath, (pos(0) + 1), (pos(1) - pos(0) - 1)))
    End Function

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        'boutton split, lance la demande de nom de fichier si cela n'a pas été fait
        Dim chemin1 As String
        If pathsource.Text = "" Then
            of1.Title = "Choisissez le fichier à splitter"
            of1.Filter = "*.*|*.*"
            of1.InitialDirectory = Environment.CurrentDirectory
            of1.ShowDialog()
            If of1.FileName = "" Then
                of1.Dispose()
                Exit Sub
            End If
            chemin1 = of1.FileName
        Else
            chemin1 = pathsource.Text
        End If
        of1.Dispose()
        Dim nbrfile As Integer = nbrsplit.Value
        Dim chemin2(nbrfile) As String
        split(nbrfile, chemin1)

    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'selectionne et affiche les calculs de tailles d'un fichier à splitter deja vu au dessus
        of1.Title = "Choisissez le fichier à splitter"
        of1.Filter = "*.*|*.*"
        of1.InitialDirectory = Environment.CurrentDirectory
        of1.ShowDialog()
        If of1.FileName <> "" Then
            pathsource.Text = of1.FileName
            Dim lnginit As Long
            Dim lngsplit As Long
            Dim lnglastsplit As Long

            lnginit = FileLen(pathsource.Text)
            lngsplit = lnginit / nbrsplit.Value
            If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
            lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
            'lnglastsplit = lngsplit + (lnginit Mod nbrsplit.Value)
            Dim taillesource As Long = FileLen(pathsource.Text)
            Dim lentaille As Integer = taillesource.ToString.Length

            Select Case lentaille
                Case Is <= 3
                    lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
                Case Is > 3
                    lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
                Case Is > 6
                    lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
                Case Is > 9
                    lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
            End Select
            lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
            lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
        End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        'Selectionne un fichier .hbs, affiche la tailles de ces fichiers et en determine la taille du fichier a resplitter
        'le code a deja été utilise plus haut dans le form load, il aurait été plus pratique de faire un sub, je sais
        of1.Title = "Choisissez un des fichiers d'un groupe hbs"
        of1.Filter = "hbs files *.hbs|*.hbs"
        of1.InitialDirectory = Environment.CurrentDirectory
        of1.ShowDialog()
        If of1.FileName = "" Then Exit Sub
        pathsource2.Text = of1.FileName
        lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
        lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
        lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"

        Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
        Dim lentaille As Integer = tailledesplit.ToString.Length

        'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
        Select Case lentaille
            Case Is <= 3
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
            Case Is > 3
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
            Case Is > 6
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
            Case Is > 9
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
        End Select
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        'si il n'y a pas encore de fichier .hbs selectionné, relance la selection
        If pathsource2.Text = "" Then
            of1.Title = "Choisissez un des fichiers d'un groupe hbs"
            of1.Filter = "hbs files *.hbs|*.hbs"
            of1.InitialDirectory = Environment.CurrentDirectory
            of1.ShowDialog()
            If of1.FileName = "" Then
                of1.Dispose()
                Exit Sub
            End If
            pathsource2.Text = of1.FileName
        End If
        Dim chemin1 As String = pathsource2.Text
        of1.Dispose()
        Dim nbrfile As Integer = get_nbrfile(chemin1)
        Dim temp As String
        temp = Mid(chemin1, 1, Len(chemin1) - 4)
        'depuis le chemin des fichiers .hbs et les mets dans la tableau chemin2()
        Dim chemin2(nbrfile) As String
        Dim i As Integer
        For i = 1 To nbrfile
            chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_")))
        Next
        Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
        sf1.Title = "Enregistrer le fichier sous"
        sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) 'on recupere l'extension du fichier source pour ne proposer l'enregistrement que sous cette extension
        sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\")) 'on recupere le nom de fichier d'origine pour le proposer par defaut à l'enregistrement
        sf1.ShowDialog()
        If sf1.FileName = "" Then Exit Sub
        'lance la function unsplit
        unsplit(nbrfile, chemin2, sf1.FileName)
    End Sub

    Private Sub nbrsplit_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nbrsplit.ValueChanged
        'A chaque fois que la valeur est changé, on recalcule la taille des fichiers
        If pathsource.Text = "" Then Exit Sub
        Dim lnginit As Long
        Dim lngsplit As Long
        Dim lnglastsplit As Long
        'On recalcul la taille de l'eventuel split :
        lnginit = FileLen(pathsource.Text)
        lngsplit = lnginit / nbrsplit.Value
        If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
        lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
        Dim taillesource As Long = FileLen(pathsource.Text)
        Dim lentaille As Integer = taillesource.ToString.Length
        'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
        Select Case lentaille
            Case Is <= 3
                lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
            Case Is > 3
                lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
            Case Is > 6
                lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
            Case Is > 9
                lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
        End Select
        lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
        lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString

    End Sub

    Public Function hb_inside(ByVal source As String, ByVal stravant As String, ByVal strapres As String)
        'fonction qui renvoie ce qu'il y a entre deux sous-string, dans une string 
        If InStr(1, source, stravant) > 0 Then
            If InStr((InStr(1, source, stravant)), source, strapres) > 0 Then
                If Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant))) <> "" Then
                    Return Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant)))
                End If
            End If
        End If
    End Function
End Class

Conclusion :


Ce n'est pas specialement original mais c'etait en partie pour voir les performances de cette methode à laquelle j'ai penser en cours (pas d'info nan...de dessin technique...arg!) ... le resultat est plutot correct, meme pour des gros fichiers types iso de 700Mo .
Laissez vos avis, remarques, critiques en commentaires :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

psycho81
Messages postés
88
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
17 février 2008
-
mouah, que de bla bla pour un "on" à la noix ... Vous en oubliez presque le code qui était à l'origine ... Allez, un peu de sens civique, "on" se croirait dans une arène de combat. Perso, je trouve le code utile, bien que je préfère l'utilisation des tableau d'octets pour de tels traitements (au niveau temps d'écriture j'ai constaté que c'était plus performant).

Voili voilou

Bonne prog et ensemble programmons ! au lieu de nous pigner la gueule pour des futilités.
hvb
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1 -
"pour donner dequoi d'utile, des fonction tu connais ???"
non vraiment crois moi, même si je sais aussi bien que toi ce qu'est une fonction, ta phrase veut strictement rien dire.

Tu prends un ton narquois pour rien... "tu connais les fonctions?", mec si tu viens faire l'eloge de la POO, parles moi d'autre chose que de fonctions... des class, de l'heritage, du surclassement, du theading... car meme en lisant ce vieux code, tu verras que des fonctions basique et procédures, j'en utilise, c'est juste que j'ai pas du tout optimiser ça à l'epoque. Peut être que je devrais t'expliquer ce que moi je sais sur la POO? ;) =)
Sans te manquer de resppect, j'ai regarder quelques sources que tu as posté, et j'ai rien à apprendre de toi...

Et pour la recherche, je sais pas ce que tu as cherché... et je connais pas le critères de la recherche de Nix.

Sans rancunes :p
cs_dragon
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
3 -
première phrase incompréhensible ??? à part un "s" manquant et un "a" au lieu d'un "à" le restant de la première phrase a pas d'erreur. Tu sais c'est quoi une fonction ???

pour .net oui il est plus lent dans les interfaces graphique, beaucoup plus de mémoire est utilisé et beaucoup plus d'évênement est déclaré. Être en C#, les évênement son déclaré manuellement, mais en VB.net, tout les évênements sont présent (les handles étant non nécessaire en vb.net a moins de créer le composant à la main)

j'ai pas dit de reprendre ton projet, je disait pour les projets futur de mieux découper en fonction. VB.Net a été copier du Java et le Java a été créé pour être programmé en orienté objet et non en procédurale. Je retournerais jamais sous vb6.0, sauf si obligation, mais pour un code écris au complet en une fonction, ça donne rien d'avoir passé a .net.

en plus, je suis tombé sur ta source, j'ai pas regardé la date de diffusion sur le site. En faisant une recherche ta source est tombé comme premier résultat ??? et ton nick me disait rien. donc ej t'ai considéré comme un débutant. désolé. Ça serait pareil pour moi si tu regardais mes premières sources. Par contre, je comprend toujours pas pourquoi ta source est tombé premier dasn les résultats ??? mais bon. En passant, non j'ai pas voter, je vote très rarement. Donc non je t,ai pas donné un 1/10. Par contre c'est bizarre, on dirait que tu as aucun vote mais tu as un 1/10 de moyenne lol. Petit bug ici
hvb
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1 -
1) ta première phrase est incomprehensible. Le reste aussi difficile à lire que mon code. Tu sais coder mais pas écrire en français? :D
2) Ce code a deux ans et demi, j'ai repeter plusieurs fois dans les commentaires que j'avais vraiment la flemme de reprendre un projet aussi inutile. Donc j'approuve la critique mais la m.a.j, je la ferais quand j'aurais le temps...
3) Je suis presque convaincu que tu as tort pour vb.net, il est certes plus lent à charger, mais sur des calculs en boucle, il est bien plus puissant que vb6.
cs_dragon
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
3 -
pour donner dequoi d'utile, des fonction tu connais ???
divise ton code en fonction, ça va déjà rendre ton code beaucoup plus clair et moins dur a lire

ensuite, ça donne rien de passer a .net si tu code pas en orienté objet. eh ... là faut soit un bon livre soit un cour. Bon oki, je dis pas que tu peux pas programmer en procédurale en énet, sauf que c'est juste que ton code sera lent pour rien. VB.net est plus lent que vb6.0. Par contre vb6.0 est vraiment basique a comparer .net

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.