Ouvrir et editer un fichier ISO

li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 - 1 mars 2004 à 16:34
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 23 mars 2004 à 20:01
Bonjour , tout d'abord j'aimerais remercier vbfrance.com
et tout ceux qui viennent deposer des sources et des reponses ds le forum vous m'aidez beaucoup.

J'aimerais ouvrir un fichier ISO et pouvoir l'editer, changer des fichiers , les lires ,etc...

je pense que c'est possible avec vb avec quelque chose du genre :

Open "machin.iso" As Binary

Pouvez vous m'eclaircir s il vous plait ?

Merci

9 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
12 mars 2004 à 21:41
salut

- déjà il faut que tu es la spécification du format par exemple sur myfileformats.com à ISO
- ensuite tu ouvres le fichier For Input As Binary et tu lis le morceau du fichier dans lequel se trouve la table d'allocation (ou une liste des fichiers présents)
- tu analyses dans ton prog les données binaires à l'aide des définitions de structures que tu trouvera dans la spécification
-pour lire : il suffit de lire les structures comme elles sont en brute dans le fichier
-par contre pour modifier, il faut recalculer les offsets et autres pointeurs stockés dans la structure du fichier

ce n'est pas infaisable mais c'est du boulot. Il n'existe pas à ma connaissance de code tout fait ou de dll lisant les fichiers ISO à part les logiciels payants genre ISOBuster et autres...

voila

ShareVB
0
li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 1
18 mars 2004 à 22:04
Bonjour , merci énormément pour ta réponse .

j'ai trouvé une page sur la constitution du disc que je voudrai etudier >> cliquez ici

pour le moment j'aimerais juste lire 4 caractères ascii
d'après le document ils se trouvent à

"offset +00000000 ( +0000~3 ) "

je vais regarder sur le msdn s'il y a quoi que ce soit la dessus , je m'y connais pas très bien mais bon faut bien commencer un jour lol
0
li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 1
18 mars 2004 à 22:04
Bonjour , merci énormément pour ta réponse .

j'ai trouvé une page sur la constitution du disc que je voudrai etudier >> cliquez ici

pour le moment j'aimerais juste lire 4 caractères ascii
d'après le document ils se trouvent à

"offset +00000000 ( +0000~3 ) "

je vais regarder sur le msdn s'il y a quoi que ce soit la dessus , je m'y connais pas très bien mais bon faut bien commencer un jour lol
0
li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 1
18 mars 2004 à 23:57
Re,
bon alors j'ai rien trouvé d'intérressant sur msdn en revanche
j'ai réussi à lire les 6 premiers charactère ( j en voulais que 4 :/ )
en faisant comme suit :
        Dim iso As String
        iso = TextBox1.Text()

        Dim read As System.IO.StreamReader
        read = New System.IO.StreamReader(iso)
        TextBox2.Text = read.ReadLine()


le "Readline" va lire une ligne et la retranscrire en "string" ( 4chr ou num et 2 num )
pour la mettre dans mon textbox ( en fait il lit pas grand chose, juste 6 charactere )
bon, je trouve que c'est un peu trop facile ( ca cache quelque chose !!! )

alors j'essais de lire a un endroit "choisi"
je fais ca :
        Dim iso2 As String
        iso2 = TextBox1.Text()

        Dim buffer As String

        Dim read As System.IO.StreamReader
        read = New System.IO.StreamReader(iso2)
        TextBox2.Text = read.Read(buffer, 0, 4)
        'buffer, c'est le buffer...
        '0, c'est l'index
        '4, c'est le nombre de char a lire ...


et la il fais rien.
enfin, si il m'affiche ca :
"Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection."
0

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

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
19 mars 2004 à 20:28
salut

je pense que : - Index est "one based" premier index 1
- une chaine String non initialisée n'est pas un buffer mais un "pointeur" = 0 donc :
dim buffer as string.new(ctype(0,char),4)

voila

ShareVB
0
li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 1
20 mars 2004 à 02:37
et bien en fait , non ! :/
parce que les lettres que je voulais obtenir
c'etait "1: G" "2 et 3 : id" ( 2lettres ou 2chiffres ) et "4 : J , U ou E"
ces quatre lettres représentant le nom du jeu la en l'occurence c'était GAFE01
(GamecubeAnimalCrossingEurope/01 pour Nintendo (gamemaker))
et j'ai eu cette reponse du prog avec l'index zero.

merci pour ta remarque sur le buffer (je pige un peu plus de jour en jours c kewl )
J'ai étudié une source C++ ( bha oui avant j'y captais rien mais depuis que je fait du vb.net j'arrive a déchiffrer tt ce charabiat lol ) et donc il était question de "pointeur".
par contre je connaissais pas ce genre de synthax :/
dim buffer as string = X ouais mais la c'est bizarre ce que t'as fais lol , en tout cas c'a ma l'air interressant je vais essayer ca .
Tu sais si on peut commencer la lecture du fichier ailleurs que 0 ?
je sais que je veux aller a +0020 mais comment je fait?
J'ai essayé avec
iso.read(buf,20,10) mais plutard j'ai compris que la ou j'ai mis 20 c'etait la ou il commencait a ecrire dans "buf" ( non ? )
sinon comment ca marche la lecture des offset ?

en tout cas merci enormement encore pour ta réponse je vais tester ca desuite .
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
22 mars 2004 à 20:25
salut

eh bien en fait tu ne lis pas les offsets mais les données qui sont à cet offset :)
iso.read(buff,20,10) copie 10 octets (de l'offset 20 depuis le début du fichier) du fichier du stream iso dans buff. buff doit etre de 10 octets. Il est possible que VB dimensionne tout seul le buffer...

voila

ShareVB
0
li9 Messages postés 57 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 septembre 2008 1
22 mars 2004 à 22:19
Salut merci beaucoup pour ta réponse ,
alors j'ai essayé
dim buf(30) as char
iso.read(buf,20,10)
il m'affiche rien mais il plante pas c'est déjà ça , c'est qu'il y a quelque chose .

vb m'accepte pas le
dim buf as string.new ( ctype(0,char),4)
ça couille de partout lol
c'est quoi exactement ça "ctype" c'est le type de caractères ?
ou d'affichage des char ? ( si je comprenais ce que je tape peut etre que je pourrais essayer de le rectifier selon mon compilateur :/ )

je voulais savoir un truc aussi , y a combien d'octets entre 2 offset ? 1 seul ?
Je pense que oui sans trop vouloir m'avencer parce que je vois sur ma doc
"offset 0400 , size 0x20 , element"
"offset 0420 , size 0x20 , element"
en fait , en supposant que "size 0x20" veut dire "size 20octets" , le prochain element se trouve à 20 offset plus loin donc 20octets. j'ai bon là ?

a oui , un dernier truc que j'ai pas très bien capté ; quand
l'offset se trouve à +042C ... je fais comment pour y acceder ? lol"C" c'est pas un numéro a ce que je sache :/
ou peut etre que les offset sur la doc sont dans un certain format que je doit reconvertir pour avoir l'emplacement en chiffre ... un peu comme ( hexa > ascii )

en tout cas désolé , je dois saouler avec toutes mes questions nulles de débutant ^^"
désolé , désolé
et merci , merci pour tes réponses .
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
23 mars 2004 à 20:01
salut

j'vais oublié un morceau : Dim buf As String = New String(" ", 4) et il n'y avait pas besoin de Ctype
un offset est un décalage depuis le début du fichier (ainsi entre l'offset 0x002 et l'offset 0x004 il ya 2 octets)
ensuite size 0x20 indique que la taille est 32 octets (0x indique de l'hexadécimal)

+042c c'est soit l'offset depuis le début du fichier soit l'offset depuis l'offset du début de la structure

voila

ShareVB
0
Rejoignez-nous