IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Modification fichier Hexadécimal Automatiquement


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Modification fichier Hexadécimal Automatiquement
    Salut a tous !

    Si je poste c'est que j'ai passé de longues heures à chercher partout si on peux avec Visual Studio créer un programme qui me prend, ouvre et modifie un fichier binaire.

    Ce fichier binaire peut soit se lire en 8 bits et hexadécimal ou bien aussi en 16 bits et décimal.

    Le but est d'un programme qui recherche dans ce fichier une chaine de caractère et qui la remplace, et qu'au final je puisse enregistrer le nouveau fichier modifier !

    J'ai fais tout ce qui est session, fichier php et base sql à distance etc mais cela je ne trouve pas..

    Si une âme charitable peux me donner un coup de pouce ce serait parfait !!

    Merci de m'avoir lu !

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Je ne veux pas laché l'affaire je continue d'essayé tout et nimport quoi!! si quelqu'un peux me donné un coup de main je bloque vraiment !

  3. #3
    Expert confirmé Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Points : 5 522
    Points
    5 522
    Par défaut
    Bonjour,

    Les classes BinaryReader et BinaryWriter sont celles qu'il te faut. Tu lis ton fichier avec BinaryReader, tu fais les modifications nécessaires, tu écris un autre fichier avec BinaryWriter, tu effaces l'ancien, et tu renommes le nouveau avec l'ancien nom. N'écris pas dans le fichier que tu es en train de lire, ça évite les risques d'écraser des données.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut ed !

    Merci de m'avoir mis sur la piste, j'ai cherché toute la journée pour essayé de comprendre comment faire marché cela.

    Hélas je n'y arrives pas.. Je ne trouve pas beaucoup d'infos sur le net :/

    Je t'explique j'ai fais une barre TextBox et quand je selectionne mon fichier le chemin du fichier est dans celle ci. Pour cela est nikel.

    C'est a partir de maintenant que je bloque.

    Avec ce fichier binaire comment l'ouvrir ( je ne veux pas qu'il s'affiche ) on peut dire le " sélectionner " et suivant ensuite 2 boutons qu'il se modifie d'une certaine facon ou d'une autre et que ensuite je puisse enregistré le nouveau fichier !

    Si tu peux encore me donner un coup de pouce ce serai cool car je patoge dans la semoule :p Je suis mécanicien a la base hihi donc je fais ca dans mon passe temps mais je veux réussir mon projet !

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par tim1313 Voir le message

    Avec ce fichier binaire comment l'ouvrir ( je ne veux pas qu'il s'affiche ) on peut dire le " sélectionner " et suivant ensuite 2 boutons qu'il se modifie d'une certaine facon ou d'une autre et que ensuite je puisse enregistré le nouveau fichier !

    Si tu peux encore me donner un coup de pouce ce serai cool car je patoge dans la semoule :p Je suis mécanicien a la base hihi donc je fais ca dans mon passe temps mais je veux réussir mon projet !
    N'étant pas mécanicien de métier, je dirais que si je souhaitais faire tomber le moteur de ma bagnole qu'il faudrait pas mal de temps d'apprentissage malgré que je veuille poser mon moteur......... Et bien c'est la même chose pour le métier de développeur : IL Y A UN APPRENTISSAGE POUR TOUT TYPE DE METIER !!

    http://plasserre.developpez.com/cours/vb-net/

    Bonne lecture.

    ++

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Ah oui d'accord je vois alors J'ai quand meme fais beaucoup dont notamment un systeme d'authentification etc et j'en ai beaucoup lu. Mais c'est de emttre en forme le binaryreader et writer que je n'arrive pas :/

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Ah oui d'accord je vois alors

    Toi qui a fais beaucoup dont notamment un systeme d'authentification ......, tu ne devrais pas avoir de mal à comprendre le contenu de la doc officielle qui détaille les membres de la classe BinaryReader et BinaryWriter :


    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx


  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut le forum

    Bon toujours pas d'amélioration je sais pas du tout ce que je ne comprend pas, je n'arrive a rien construire avec ces binaryreader et writer :/
    Mais deja je veux tout simplement commencé par le début affiché mon fichier binaire dans une textbox avec binaryreader. Pour le writer je verrais par la suite une fois que j'aurais passé ce cap. Je vois quelques exemple a travers le net mais waw de mon coté sa n'avance pas.

    Deja pour le fichier a lire, je n'arrive pas a faire en sorte que ce soit le fichier sélectionné d'avant ..

    Enfin bref, pour le moment je n'arrive pas, j'aimerai beaucoup continué car j'ai ce blocage depuis quelques jours maintenant
    Si quelqu'un peu me refaire un exemple que je comprenne une bonne fois pour toute !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    Nom : Sans titre.jpg
Affichages : 1428
Taille : 66,3 Ko
    voici un exemple pour lire ton fichier avec BinaryReader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Imports System.Text
    Imports System.IO
     
    Public Class Form1
        Dim parcourir As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Hexadecimale.txt"
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim fs As New FileStream(parcourir, FileMode.Open)
            Dim reader As New BinaryReader(fs)
            TextBox1.Text = reader.ReadString
            fs.Close()
            reader.Close()
        End Sub
    End Class
    j’espère que j'ai bien répondu a votre question?
    Cordialement,

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut hacker merci pour le coup de pouce,

    je bloque toujours, mon fichier binaire ne veux pas se lire dans la textbox2 :/

    Quand je fais avec un fichier txt c'est nikel mais quand je change le code pour le fichier binaire sa bloque :/

    Quand je parle de fichier binaire c'est un truc de ce genre :

    Nom : Capture.JPG
Affichages : 1328
Taille : 341,0 Ko

    Voici le code que j'ai fais lorsque je clique sur "lire" en ayant selectionné mon fichier avec le chemin d'acces dans la textbox 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
            TextBox2.Text = Nothing
            If TextBox1.Text = Nothing Then
                ErrorMsg("Aucun fichier sélectionné !")
            Else
                Dim parcourir As String = TextBox1.Text
                Dim fs As New FileStream(parcourir, FileMode.Open)
                Dim reader As New BinaryReader(fs)
                TextBox2.Text = reader.ReadString
                fs.Close()
                reader.Close()
            End If
        End Sub

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    ton fichier n'est pas un fichier binary mais un fichier hexadécimal.
    voici un exemple pour lire ton fichier hexadécimal :
    Nom : Capture2.jpg
Affichages : 1561
Taille : 147,9 Ko

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Class Form1
        Dim parcourir As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Hexadécimal.bin"
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim bytes As Byte() = IO.File.ReadAllBytes(parcourir)
            Dim hex As String() = Array.ConvertAll(bytes, Function(b) b.ToString("X4")) 
            TextBox1.Text = String.Join(" ", hex)
        End Sub
    End Class
    j'ai vue en image que ton fichier lie en 4 décimal. a vous de choisir le format affichage par b.toString("x2") ou b.toString("x4") ....etc
    j’espère que j'ai bien répondu a votre question?
    Cordialement,

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut hacker, merci au top pour le coup de main j'ai enfin réussis a affiché mon fichier hexa dans ma textbox !!

    Bon le but vraiment du logiciel ce n'est pas ca mais je voulais tout d'abord comprendre le début de ces manipulations et m'assurer de comment le logiciel comprennais mon fichier

    Je lis parfois mon fichier hexa sois en 8, 16 bits sois en hexa ou decimal, mais aussi sois en Hi ou Lo ^^
    Mais ca doit pouvoir se configurer

    ici exemple :

    Nom : Capture.JPG
Affichages : 1370
Taille : 246,1 Ko

    Le but ultime était la recherche de certaine chaine de caractère et le remplacement de celle ci par une autre chaine que j'aurais édité moi meme

    La dans le programme on ne parle meme plus de binaryreader ni writer du coup je suis un peu perdu,
    Si tu peux encore m'aider je te remercie

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,
    Le but ultime était la recherche de certaine chaine de caractère et le remplacement de celle ci par une autre chaine que j'aurais édité moi meme
    j'avais pas compris ce que vous voulez faire mais maintenant j'ai compris le but de votre recherche. le but de votre programme c'est rechercher un hexadécimal et le remplacer par un autre code hexadécimal.
    voici un exemple pour rechercher hexadécimal :
    Nom : searchhex.jpg
Affichages : 1583
Taille : 72,1 Ko

    voici le code mais c'est pas du propre mais c'est un début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Imports System.IO
    Imports Microsoft.VisualBasic.CompilerServices
     
    Public Class Form1
        Dim parcourir As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Hexadécimal.bin"
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Try
                If TextBox1.Text.Length > 0 Then
                    Dim fs As New FileStream(parcourir, FileMode.Open, FileAccess.Read, FileShare.Read)
                    Dim reader As New BinaryReader(fs)
                    Dim Search As String = HexSearch(TextBox1.Text, fs) ' recherche la position de hexadécimal dans textbox1.text
                    reader.BaseStream.Position = Search 'position hexadécimal
                    Label2.Text = Conversion.Hex(Search) ' afficher position hexadécimal
                    reader.BaseStream.Position = "&H" & Label2.Text
                    TextBox2.Text = BitConverter.ToString(reader.ReadBytes(8)).Replace("-", "") 'afficher la longueur 4 à 16 hexadécimal
                    fs.Close() 'fermer la lecture du fichier
                    reader.Close() 'fermer la lecture du fichier
                End If
            Catch exception1 As Exception
                ProjectData.SetProjectError(exception1)
                Dim exception As Exception = exception1
                Interaction.MsgBox("Erreur", MsgBoxStyle.Critical, "Erreur Lecture")
                ProjectData.ClearProjectError()
            End Try
        End Sub
     
        Private Function HexSearch(ByVal str As String, ByVal fs As FileStream) As Long
            Dim position As Integer = 0
            Dim reader As New BinaryReader(fs)
            For i As Long = 0 To reader.BaseStream.Length - 1
                fs.Seek(i, SeekOrigin.Begin)
                If BitConverter.ToString(reader.ReadBytes(str.Length / 2)).Replace("-", "") = str Then
                    position = i
                    Exit For
                End If
            Next i
            Return position
        End Function
     
        Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
            TextBox1.Text = TextBox1.Text.Replace(" ", "") 'supprimer les espaces entre hexadécimal
        End Sub
    End Class
    j’espère que j'ai bien répondu a votre question.
    cordialement,

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    dans le code précédent , il y avait des erreurs de lectures et j'avais pas donner le code de sauvegarde en hexadécimal.
    j'ai retravailler le code, voici en image ce que ça donne :
    Nom : search.jpg
Affichages : 1476
Taille : 85,1 Ko

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Imports System.IO
    Imports Microsoft.VisualBasic.CompilerServices
    Public Class Form1
        Dim parcourir As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Hexadécimal.bin"
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            ComboBox1.SelectedIndex = 4 'afficher le numero dans le combobox1.text à l'ouverture du form1
        End Sub
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Try
                If TextBox1.Text.Length > 0 Then
                    Effacer() 'effacer tous il y a dans label2.text et textbox2.text
                    Dim fs As New FileStream(parcourir, FileMode.Open, FileAccess.Read, FileShare.Read)
                    Dim reader As New BinaryReader(fs)
                    Dim Search As String = HexSearch(TextBox1.Text, fs) 'recherche la position du hexadécimal
                    If Search Then ' il affichera si il trouve ou pas dans le fichier
                        Label2.Text = Conversion.Hex(Search) 'affiche la position du hexadecimal dans label2.text
                        reader.BaseStream.Position = "&H" & Label2.Text 'connaitre la position avant afficher dans textbox2.text
                        TextBox2.Text = BitConverter.ToString(reader.ReadBytes(ComboBox1.Text)).Replace("-", " ") 'afficher la taille hexadécimal par rapport combobox1.txt ou remplacer reader.ReadBytes(une valeur de votre choix ex : 4,8,12,16...etc)).Replace("-", " ")
                    Else
                        MessageBox.Show("Non Trouver le Hexadécimal!", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) 'message d'erreur il trouve pas le hexadécimal dans votre fichier
                    End If
                    fs.Close()
                    reader.Close()
                Else
                    MessageBox.Show("Veuillez entrer un Hexadécimal pour rechercher", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error) 'méme chose pour textbox1.text
                End If
            Catch exception1 As Exception
                ProjectData.SetProjectError(exception1)
                Dim exception As Exception = exception1
                Interaction.MsgBox("Erreur", MsgBoxStyle.Critical, "Erreur Lecture") 'si il y a eu un probléme de lecture du fichier
                ProjectData.ClearProjectError()
            End Try
        End Sub
     
        Private Function HexSearch(ByVal str As String, ByVal fs As FileStream) As Long
            Dim position As Integer = 0
            Dim reader As New BinaryReader(fs)
            For i As Long = 0 To reader.BaseStream.Length - 1
                fs.Seek(i, SeekOrigin.Begin)
                If BitConverter.ToString(reader.ReadBytes(str.Length / 2)).Replace("-", "") = str Then
                    position = i
                    Exit For
                End If
            Next i
            Return position
        End Function
     
        Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
            TextBox1.Text = TextBox1.Text.Replace(" ", "") 'supprimer les espaces en hexadécimal
        End Sub
     
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            If TextBox2.Text.Length > 0 Then
                Dim fs As New FileStream(parcourir, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
                Dim writer As New BinaryWriter(fs)
                writer.BaseStream.Position = "&H" & Label2.Text 
                Dim hex = Split(TextBox2.Text, " ")
                Dim data(UBound(hex)) As Byte
                For i = LBound(hex) To UBound(hex)
                    data(i) = Val("&H" & hex(i))
                Next i
                writer.Write(data)
                fs.Close()
                writer.Close()
                MessageBox.Show("Sauvegarder Reussite !", "Sauvegarder", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Sub
     
        Private Sub Effacer()
            Label2.Text = Nothing
            TextBox2.Clear()
        End Sub
     
    End Class
    dans combobox1.text = tu choisiras la taille affichage du hexadécimal dans textbox2.text.
    exemple : 2 bites = 31 34 , 4 bites = 31 34 34 34 ....etc

    j’espère que j'ai résolu votre problème.
    cordialement,

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut hacker, vous me donnez vraiment un coup de boost ici ^^

    On y est presque !! Enfait j'ai du mal m'exprimer, il faut que le logiciel cherche lui même des chaines et les modifient seul
    C'est moi qui lui indiquerai les chaines à rechercher, et de quelle facon les remplacés, il y en aura plusieurs, 10 chaines, 20 chaines, voir 40 chaines suivants mes fichiers, et elles peuvent etre assez longues ^^.

    Que l'utilisateur ne qui puisse agir sur ces modifications de chaines, l'utilisateur mettra son fichier et quand il appuie sur le bouton " process " alors il le logiciel fera les modifications inscrites dans le logiciel, et il n'aura plus qu'a l'enregistrer :p

    C'est déjà un travail énorme que vous m'avez offert, on y est presque, une fois que j'aurais réussis pour un fichier, alors j'aurais plus qu'a inscrire les modifications 1 à 1 pour les 100 aines d'autre fichier différents :p

    Pour vous immagez mon logiciel le voici :

    Nom : Capture.JPG
Affichages : 1282
Taille : 38,5 Ko

    J'ai fais un treeview avec différents type de véhicule, l'utilisateur sélectionne le sien, charge son fichier en haut, et ensuite il pourra faire 3 options en bas, et sauvegardé le nouveau fichier qui aura été modifié

    J'ai fais un système d'enregistrement au début, et je ferais aussi un système de mise a jour lors de l'ouverture du logiciel, cela est plus simple car contrairement à ce que je recherche ici mon l'hexadécimal beaucoup ont fais ces système et j'arrive a trouvé et adapté ce que je veux Mais ce à quoi vous m'aidé n'as encore pas vraiment été traité et expliqué pour les débutants comme moi

    Je vous remercie !

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Points : 0
    Points
    0
    Par défaut
    Bonjour tim1313,

    Pouvez-vous me dire où il y est le problème dans votre projet.

    Mais vous pouvez ajouter pour afficher dans TextBox2.Text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     BitConverter.ToString(reader.ReadBytes(10 ou 20 ou 40 héxadécimal)).Replace("-", " ")
    Cordialement,

  17. #17
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ed73170 Voir le message
    Bonjour,
    Les classes BinaryReader et BinaryWriter sont celles qu'il te faut. Tu lis ton fichier avec BinaryReader, tu fais les modifications nécessaires, tu écris un autre fichier avec BinaryWriter, tu effaces l'ancien, et tu renommes le nouveau avec l'ancien nom. N'écris pas dans le fichier que tu es en train de lire, ça évite les risques d'écraser des données.
    A quoi vont servir BinaryReader et BinaryWriter ?

    FileStream dispose de tout ce qu'il faut !

    Quant à recopier l'intégralité du fichier dans un nouveau fichier... super conseil !
    Le jour on on doit modifier les méta dans un fichier vidéo on n'est pas rendu...

    S'il s'agit de modifier un fichier binaire pour remplacer une séquence par une autre (de même taille) alors en aucun cas il faut recopier le fichier !

    Voici un exemple en C# (il faudra traduire, désolé, j'ai trop fait de VB pour supporter le VB.NET) qui va remplacer (en héxa) la chaîne "TOTO" par "Lulu" dans un fichier.

    Afin de ne pas faire trop usine à gaz, je n'ai volontairement pas géré le cas où le fichier est plus gros que BUFFER_SIZE.

    De toute façon en général quand on modifie un fichier binaire, on sait à l'avance "grossomodo" où on doit modifier, donc on a rarement besoin de charger plus de 4 Ko. Il suffit de seeker dans la bonne zone avant de lire.

    Ensuite, miracle du mode d'accès au fichier FileAccess.ReadWrite, on va écrire 4 octets dans le fichier sans même devoir le réouvrir ! C'est quand même un peu moins goret que de recopier tout le fichier...

    Et en plus, on peut le faire à chaud pendant que le programme qui utilise le fichier binaire tourne (du moment que le fichier n'est pas locké en écriture), ce que ne permet pas la recopie.

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    using System.IO;
     
    namespace TestFile
    {
        class Program
        {
            const int BUFFER_SIZE = 4096;
     
            static void Main(string[] args)
            {
                byte[] search = new byte[] { 0x54, 0x4F, 0x54, 0x4F };
                byte[] replace = new byte[] { 0x4C, 0x75, 0x6C, 0x75 };
     
                string filename = @"c:\in\myfile.bin";
     
                using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    // Lecture d'un buffer de 4 Ko
                    // On ne gère pas ici la possibilité que le fichier dépasse les 4 Ko
                    // Sinon c'est pas compliqué, il suffit de boucler jusqu'à la fin du fichier, en vérifier les cas où les éléments recherchés seraient à cheval sur deux buffers
                    byte[] buff = new byte[BUFFER_SIZE];
                    int nbBytes = fs.Read(buff, 0, BUFFER_SIZE);
     
                    for (int i = 0; i < nbBytes - 3; ++i)
                    {
                        if (buff[i] == search[0] && buff[i + 1] == search[1] && buff[i + 2] == search[2])
                        {
                            fs.Seek(i, SeekOrigin.Begin);
                            fs.Write(replace, 0, replace.Length);
                            break;
                        }
                    }
     
                    fs.Close();
                }
            }
        }
    }
    On ne jouit bien que de ce qu’on partage.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Salut a tous, je m'y met toujours aprés le boulot de la journée et j'y passe quelques heures ! Je vous remercie du coup de main de tous les 2 qui me sont d'une grande aide !

    Je continu d'essayé de mettre en place mon code sa prend un peu de temps mais je vais réussir je le sais !

    Pour traduire du C en .NET je vais pouvoir trouver a travers le net, mais pour le moment c'est plutot de mettre en forme les différentes formule et surtout de comprendre car si je copie betement sa ne me servira a rien du tout si je souhaite encore développé mon petit programme

    Je vous donne des nouvelles lorsques j'aurais réussis a sortir un petit truc !

    Bonne soirée

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Resalut a tous,

    Je n'arrive pas a modifier vos code pour pouvoir réussir a faire ce que je souhaite

    Si vous pouvez encore un peu m'aidé

    J'explique :

    Sélection manuel du fichier ( l'utilisateur choisira le fichier ou il le souhaite )
    Modification automatique de certaines chaines hexadécimal, c'est a dire que l'utilisateur appuie seulement sur un bouton et le fichier sera modifier comme moi j'aurais programmé. Du coté code que ce sois possible de recherché une chaine spécifique ou une adresse dans le fichier pour repéré la chaine a modifié.

    Et aussi si je met un second bouton qui modifie lui des chaines différentes du 1er que les modifications sois de bouton 1 et bouton 2 si j'ai appuyé les 2 boutons, autrement seulement bouton 2 si je n'ai pas appuyé le 1er.

    Et pour finir enregistrement du fichier modifier la ou l'utilisateur le souhaite et avec le nom qu'il veut.

    Le programme ne dois pas écrasé l'ancien mais en faire un nouveau afin de gardé le fichier original.

    Merci bien de m'avoir lu et de votre aide !

Discussions similaires

  1. Import de fichier CSV automatique dans Access
    Par Jmar dans le forum Access
    Réponses: 4
    Dernier message: 20/01/2006, 10h48
  2. [VB.NET] modification fichier XML
    Par betaphp dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/11/2005, 11h13
  3. [FLASH MX] Modification fichier SWF
    Par tom06440 dans le forum Flash
    Réponses: 8
    Dernier message: 19/04/2005, 20h23
  4. [MFC] recupération date modif fichier
    Par Gothico dans le forum MFC
    Réponses: 7
    Dernier message: 21/01/2005, 18h47
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo