Découper un fichier

Résolu
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012 - 9 août 2004 à 19:49
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012 - 9 août 2004 à 23:41
Bonjour/soir,

J'ai un fichier (fichier.aaa) qui est la concaténation de 10 fichiers, les uns à la suite des autres (aussi bien texte que image).
Dans mon programme, j'ouvre ce "fichier.aaa" (en binaire) et je récupère son contenu dans la variable "contenu".
J'ai 2 problèmes:

1) J'aimerais effectuer une recherche à l'intérieur de cette variable de la même manière qu'avec la fonction InStr (pour connaitre la position de la chaine que je recherche). InStr ne fonctionne pas car il n'y a pas que du texte dans ce fichier.aaa .

2) J'aimerais récupérer une partie du fichier (ou de la variable "contenu") de l'octet 257 à l'octet 14920 pour ensuite la coller dans un autre fichier.

Merci de votre aide :)
Cordialement,
$eb

5 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 août 2004 à 21:14
Dsl le $ est l'ancienne façon d'ecrire la fonction j'ai des mauvaises habitudes a perdre :P

Sinon tu recupere bien les données a une chose pres il faut declarer Contenu As String sinon c'est un variant la manipulation de variant est plus longue.

Pour ce qui est des chaines utilise instr ça marche pour les chaine ansi si tu veux chercher une chaine unicode ajoute des chr(0) ou (vbNullChar) entre chaque caractere de la chaine a chercher comme ceci :

i = instr(1,Contenu,"M" & vbNullChar & "A" & vbNullChar & "N" & chr(0) & "U" & chr(0))

c'est un peu fastidieu mais ça marche bien

@+

E.B.
3
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 août 2004 à 20:00
1 - instr marche si tu a defini ton buffer du type string
apres cela depend si c'est une chaine unicode ou ansi

2 - fait :
Dim a as string
a = mid$(Buffer,257,14920-257)

@+

E.B.
0
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
9 août 2004 à 20:55
Chaine unicode ou ansi ?
Je sais pas, à vrai dire c'est le contenu d'un fichier image (jpg, gif, bmp) ou n'importe quel autre (mp3,rar,zip,wav...).

J'ai jamais utilisé le "$" (dollars) derrière les fonction left, right, mid : c'est quoi la différence ?

Voici la façon dont je récupère le contenu:

F = FreeFile
Dim Contenu
Open CommonDialog1.FileName For Binary Access Read Lock Read As #F
Contenu = Input(LOF(F), F)
Close #F

Est-ce que c'est correct ? ou y-a-t-il une meilleure façon de procéder ?
(Merci pour ta réponse EBArtSoft.)
$eb
0
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
9 août 2004 à 23:38
Argument ou appel de procédure incorrect:

P = InStr(0, Contenu, "spz", vbTextCompare)

(avec et sans les vbnullchar)

$eb
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
9 août 2004 à 23:41
Ok j'ai rien dit: la position "0", c'est pas top dans InStr !
Encore une fois, merci EBArtSoft ;-)

$eb
0
Rejoignez-nous