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 :

Aide adaptation code : Lecture d'une plage à partir d'un Offset.


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Par défaut Aide adaptation code : Lecture d'une plage à partir d'un Offset.
    Bonjour à tous,

    J'ai trouvé le code suivant sur MSDN:

    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
    Dim pathSource As String = "c:\tests\source.txt"
        Try 
            Using fsSource As FileStream = New FileStream(pathSource, _
                FileMode.Open, FileAccess.Read)
                ' Read the source file into a byte array.
                    Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
                    Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
                    Dim numBytesRead As Integer = 0
     
                    While (numBytesToRead > 0)
                        ' Read may return anything from 0 to numBytesToRead.
                        Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
                            numBytesToRead)
                        ' Break when the end of the file is reached.
                        If (n = 0) Then
                            Exit While
                        End If
                        numBytesRead = (numBytesRead + n)
                        numBytesToRead = (numBytesToRead - n)
     
                    End While
                numBytesToRead = bytes.Length
            End Using
        Catch ioEx As FileNotFoundException
            Console.WriteLine(ioEx.Message)
        End Try
    Je cherche à l'adapter sans succès. Je voudrais à partir d'un Offset, récupérer la valeur d'une plage.

    Exemple :

    Offset 0x0C0
    longueur 4 :

    Récupérer la valeur de cette plage qui est "TOTO".

    Quelqu'un peut il m'aider ?

    Merci d'avance

    Creepy

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    à voir : méthode seek.
    http://msdn.microsoft.com/en-us/libr...=VS.90%29.aspx

    La fonction et son appel pourraient ressembler à :
    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
        Private Function fsSeek(ByVal file As String, ByVal offset As Int64, ByVal length As Integer) As String
     
            Dim fs As New FileStream(file, FileMode.Open, FileAccess.Read)
            Dim result As String = ""
     
            For offset = offset To offset + length - 1
                fs.Seek(offset, SeekOrigin.Begin)
                result += (Convert.ToChar(fs.ReadByte()))
     
            Next offset
     
            Return result
     
        End Function
     
        Private Sub btnSeek_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSeek.Click
            MessageBox.Show(fsSeek(Application.StartupPath & "\temp.txt", &HC0, 4))
        End Sub
    NB : le préfixe en basic est "&H".

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    Une autre façon de faire est d'utiliser un BinaryReader et de charger tous les octets dans un tableau d'octets. L'utilisation de BinaryReader permet aussi d'utiliser le flux sous-jacent (BaseStream) et d'utiliser la méthode Seek.

    L'avantage du BinaryReader est de pouvoir lire directement le type de donnée désiré. (ReadChar, ReadDouble etc ..)

    Une autre basée sur le tableau d'octet est d'utiliser un system.IO.file.readallbytes.

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Février 2006
    Messages : 32
    Par défaut Merci...
    Merci pour cette aide.

    Creepy

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2009, 16h20
  2. Réponses: 6
    Dernier message: 08/12/2008, 12h22
  3. analyse d'une plage à partir de la cellule active
    Par buhrne dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/03/2008, 09h27
  4. Insertion de données dans une plage à partir d'un formulaire
    Par andre55 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/10/2007, 10h48
  5. Remplir une plage à partir d'un tableau
    Par roudy78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 10h56

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