Fusion bit - permet de coller des fichier bout à bout

Soyez le premier à donner votre avis sur cette source.

Vue 3 348 fois - Téléchargée 266 fois

Description

Voilà un programme qui permet de coller des fichiers bout à bout .

Je parrie qu'il en existe pleins , cependant je vous propose ici , une methode qui gére les grosses tailles de fichiers , et qui est performante ...

J'éspére que ce code servira , et sur ce bonne prog à tous .

(source de 8 Ko)

Source / Exemple :


' Pour le projet , voir zip , sinon pour que vous mettiez ce module dans vos programmes 
' il vous faut copier seulement la Fonction Fusion et TailleFic
' Quand à la fonction TailleFic , elle à été codée par : SoulManTo 
' voir ci-dessous pour amples explications
Public Sub fusion(FichierExecutable As String, FichierXla As String, FichierNouveau As String)
On Error GoTo Trap
Dim ExeBuffer As String
Dim XlaBuffer As String
Dim PF1 As Long
Dim PF2 As Long
' Lecture avec Buffer des Fichiers
PF1 = FreeFile()
PF2 = FreeFile()
Open FichierExecutable For Binary Access Read As #PF1
ExeBuffer = Space(LOF(PF1))
Get #PF1, 1, ExeBuffer
Close #PF1
Open FichierXla For Binary Access Read As #PF2
XlaBuffer = Space(LOF(PF2))
Get #PF2, 1, XlaBuffer
Close #PF2
' Ecriture dans un nouveau fichier , ou écraser l'ancien
Open FichierNouveau For Output As #1
Print #1, ExeBuffer & XlaBuffer
Close #1
' Lecture des tailles de fichiers
Dim Taille1 As String
Dim Taille2 As String
Dim Taille3 As String
Taille1 = TailleFic(FichierExecutable)
Taille2 = TailleFic(FichierXla)
Taille3 = TailleFic(FichierNouveau)
MsgBox "Infos sur les fichiers Fusionés :" & vbCrLf & vbCrLf & "Fichier Executable : " & Taille1 & vbCrLf & "Fichier XLA : " & Taille2 & vbCrLf & "Fichier Nouveau : " & Taille3, vbInformation + vbOKOnly, "FUSION..."
' Effacement des Temps
PF1 = FreeFile()
PF2 = FreeFile()
ExeBuffer = Empty
XlaBuffer = Empty
MsgBox "Fusion Réussie !", vbInformation + vbOKOnly, "Ok..."
Exit Sub
Trap:
MsgBox "Erreur : " & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Erreur " & Err.Number
Err.Clear
Exit Sub
End Sub

Public Function TailleFic(chemin As String) As String
Dim valeur As Variant
Dim unit As String
valeur = FileLen(chemin)
If valeur < 1000 Then
    unit = "octets"
ElseIf valeur / 1024 < 1000 Then
    unit = "Ko"
    valeur = Left(valeur / 1024, 4)
ElseIf valeur / 1024 ^ 2 < 1000 Then
    unit = "Mo"
    valeur = Left(valeur / 1024 ^ 2, 5)
ElseIf valeur / 1024 ^ 3 < 1000 Then
    unit = "Go"
    valeur = Left(valeur / 1024 ^ 3, 4)
End If
TailleFic = valeur & " " & unit
End Function

Private Sub Command1_Click(Index As Integer)
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> Empty Then _
Text1(Index).Text = CommonDialog1.FileName
End Sub

Private Sub Command2_Click()
fusion Text1(0).Text, Text1(1).Text, Text1(2).Text
End Sub

Conclusion :


Fonction TailleFic :

Fonction copiée sur Vbfrance.Com
http://www.vbfrance.com/article.asp?Val=3362
codé par SoulManTo !
Site : http://gregoo.free.fr/accueil.html
Ps : Pas mal le site d'ailleurs !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

tdikarimgrps
Messages postés
16
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
9 août 2002

Merci aKheNathOn !!
Ca marche super bien (la taille de mes fichiers ne sont pas gigantestque).
Merci aux autres qui apporte des infos et précision suppl. c'est toujours bon à savoir.
@+
Proger
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008

Réponse au message de aKhenat' au dessus :
La source 5100 fait la meme erreur que toi : il utilise des strings ! mais il ne charge pas entièrement le fichier en RAM: en effet il ne charge, de l'original, que la quantité de données qui sera inscrite dans un des fragment, et lors de la reconstitution, il récupère un fragment en mémoire puis l'inscrit tout de suite dans le globale. Il n'y a pas de concaténation de strings, donc ca va "vite"...
... mais question mémoire, s'il utilisai un tableau de byte à la place des strings et redim() au lieu de la fonction string() ça prendrai 2 fois moins de place en RAM. voila (et ça serai plus rapide, si on veux faire des fragment de 15Mo d'un fichier de 600Mo)

quant a la fonction copy, lol :) ,faites copy /? et vous verrez que vous pouvez copier tout un dossier vers un seul fichier :) le dos n'est pas aussi merdique que les pro-linux veulent vous faire croire!
Pourquoi est-ce rapide sous dos, me demanderez-vous ? bah parce que les copies se font par flux de données et non par chargement de fichier/écriture sur disque ... et en vb la gestion de flux, ben on ne peux que "l'émuler" ...
leneuf22
Messages postés
156
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
4 mars 2003

Pareil que patrice99, on peut faire
copy /b fichier1.ext + fichier2.ext fichierassemblé.ext

Bon bien sur, c'est toujours interressant de savoir programmer ça mais bon... :)
cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Y'à un prog qui est bcp plus complet que mon code source à l'adresse :
http://www.vbfrance.com/article.aspx?Val=5100

Et niveau mémoire , je sait pas ce qu'il en pense Proger , mais la source du gars ne doit pas trop en bouffer vu que c'est un traitement progressif ...
cs_Mike
Messages postés
70
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
24 juillet 2004
1
euhhh comment on fé pour les desassembler ????, c bien beau de les assembler mais si on peu pas les recuperer ....

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.