Séparer des fichiers concaténé via hexa

mad111 Messages postés 2 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 15 juin 2009 - 15 juin 2009 à 04:43
mad111 Messages postés 2 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 15 juin 2009 - 15 juin 2009 à 04:49
Bonjour, j'ai actuellement un petit problème avec VB6 : j'ai un fichier qui contien plusieurs PNG, que je souhaiterait séparer pour pouvoir les exploiter. pas de problèmes pour lire le fichier via hex (mais long, 35 mo de png a 200 octets de moyenne), ni pour écrire le fichier final mais en ce qui concerne le fait de détecter les fichiers et de les récupérer, j'ai un peu de mal.

je cherche a recconaitre les fichiers en fonction de leur entête et enqueue.
Pour ce qui concerne la structure du concaténé :
- qqes ko de données ne servant a rien pour commencer
- une séquence 00 00 00 XX 00 00 00
- le_nom_du_fichier.png
- %PNG (pour le début des fichiers) (89 50 4E 47 en hex)
- END®B`‚ (pour l'enqueue du fichier) (45 4E 44 AE 42 60 82 en hex)
- une séquence XX 00 00 00 XX 00 00 00
- nouveau nom de fichier, etc...

Ce sur quoi je souhaiterait de l'aide :
- détecter le nom du fichier
- détecter et récupérer les entêtes et enqueues de mes png et ce qui va entre les 2.

Pour lire mon fichier initial, j'utilise une boucle qui lit bit par bit et qui convertit en hexa. Je vous avourait que j'ai vraiment du mal pour détecter ces 3 choses (une fois que ce sera résolu, plus de problèmes).

Je pensait passer par une variable string dans la quelle je récupere mes octets en hex et dans la quelle je vérifie si son contenu est egal a l'une des séquences connues, avec uin code du type

dim tempo as string
dim ecrire as bolean
Dim File As Integer
Dim b As Byte
File = FreeFile
Open "e:\tempo\res.dat" For Binary Access Read As #File
Do While Not EOF(File)
Get #File, , b
if len(tempo) +2 > 8 then tempo = mid$(tempo,3,6)
tempo = tempo & Hex(b)
if ecrire = true then
'on ajoute chaque bit lu au fichier)
end if
if tempo = "89504E47" then
ecrire = true
'on écrit le contenu de tempo en ascii dans le fichier
end if

Loop
Close #File

pour la détection des entetes, ça passe, mais j'ai du mal avec la gestion d'un autre groupe d'hex qui ne fait pas la meme taille et surtout la récupération des noms de fichier.


Merçi d'avance pour toute aide qui poura etre apportée.

1 réponse

mad111 Messages postés 2 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 15 juin 2009
15 juin 2009 à 04:49
Je suis désolé, je n'avait pas vi que la textbox demmandait du code html pour faire des sauts de ligne, je reposte juste le code, ne trouvant pas de bouton "editer".

dim tempo as string
dim ecrire as bolean
Dim File As Integer
Dim b As Byte
File = FreeFile
Open "e:\tempo\res.dat" For Binary Access Read As #File
Do While Not EOF(File)
Get #File, , b
if len(tempo) +2 > 8 then tempo = mid$(tempo,3,6)
tempo = tempo & Hex(b)
if ecrire = true then
'on ajoute chaque bit lu au fichier)
end if
if tempo = "89504E47"
then ecrire = true
'on écrit le contenu de tempo en ascii dans le fichier
end if
Loop
Close #File
0
Rejoignez-nous