Concaténer 2 fichiers: fichiers modifiés

Résolu
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012 - 10 août 2004 à 17:08
cs_Tibabou Messages postés 129 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

3 réponses

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
11 août 2004 à 02:39
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 !
3
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
11 août 2004 à 03:24
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
0
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
11 août 2004 à 03:46
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
0
Rejoignez-nous