Concaténer 2 fichiers: fichiers modifiés [Résolu]

Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
- - Dernière réponse : cs_Tibabou
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
- 11 août 2004 à 03:46
Bonjour/soir,

J'ai 2 fichiers:

1) "phrases.txt" créé avec ce code:
'---
Open App.Path & "\phrases.txt" For Output As #1
Print #1, "Ce site est génial"
Print #1, "Tout le monde s'entraide"
Print #1, "Les réponses viennent rapidement"
Close #1
'---

2) "codessources.jpg" dont le contenu est stocké dans une variable:
'---
Dim Buffer As String
Open App.Path & "\codessources.jpg" For Binary As #2
Buffer = Space(LOF(2))
Get #2, , Buffer
Close #2
'---

Je me retrouve donc avec une variable (contenu d'une image) et d'un fichier texte.
Je veux concaténer les fichiers:
'---
Dim MonTexte As String
Open App.Path & "\phrases.txt" For Binary As #3
MonTexte = Space(LOF(3))
Get #3, , MonTexte
Close #3

Dim ContenuTotal As String
ContenuTotal = MonTexte & Buffer

Open App.Path & "\imagetexte.pack" For Binary As #4
Put #4, , ContenuTotal
Close #4
'---

J'obtiens donc un fichier (*.pack) qui contient d'abord mon texte puis mon image. Je supprime toutes les lignes correspondant au fichier texte et je sauvegarde, (il ne reste alors que le contenu du fichier image, vous me suivez ?)
J'effectue alors une comparaison hexadécimal des fichiers "codessources.jpg" et "imagetexte.pack" : il y a plein de différences mais toutes identiques: l'octet "00" a été remplacé par l'octet "20". L'image n'est donc pas valide.

Comment concaténer un fichier texte à une image sans modifier des octets de l'image ?

Tibabou
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
9
3
Merci
Salut

Dim buffer As String, MonTexte As String, ContenuTotal As String
'écriture du fichier texte
Open "H:\essai\phrases.txt" For Output As #1
Print #1, "Ce site est génial"
Print #1, "Tout le monde s'entraide"
Print #1, "Les réponses viennent rapidement"
Close 1
'lecture du fichier .jpg
Open "H:\essai\codessources.jpg" For Binary As #2
buffer = String(LOF(2), 0)
Get #2, , buffer
Close 2
'lecture du fichier texte
Open "h:\essai\phrases.txt" For Binary As #3
MonTexte = String(LOF(3), 0)
Get #3, , MonTexte
MonTexte = Left(MonTexte, Len(MonTexte) - 2)
'Suppression du vbCrLf en fin de fichier
Close 3
'écriture du fichier combiné
Open "h:\essai\imagetexte.pack" For Binary As #4
ContenuTotal = MonTexte & buffer
Put #4, , ContenuTotal
Close 4
'lecture du fichier combiné
Open "h:\essai\imagetexte.pack" For Binary As #5
buffer = String(LOF(5), 0)
Get 5, , buffer
'suppression du texte (Le texte tient 78 octets)
buffer = Mid(buffer, 79)
Close 5
'écriture du fichier .jpg
Open "h:\essai\image.jpg" For Binary As #6
Put 6, , buffer
Close 6


et en plus, ça marche !

Dire « Merci » 3

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

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

Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
0
Merci
Merci bcp, je vais tester tout ça. En tout cas, c'est exactement le style de code que j'attendais.
Je te tiens au courant...

Tibabou
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
0
Merci
MERCI BEAUCOUP !

Cependant je remarque juste que quand je fais la suppression du texte manuellement dans le *.pack, le fichier image n'est pas valide.
Mon hypothèse:
Quand j'ouvre le *.pack dans le bloc-notes, il remplace les caractères "null" par des espaces, ensuite je supprime le texte puis j'enregistre (!). C'est donc à l'enregistrement que ça déconne.

C'est un truc dans le genre ?

Encore merci: les phrases de mon fichier texte sont donc justes ;-)
Tibabou