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 6 et antérieur Discussion :

Comment lire le contenu d'un fichier ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut Comment lire le contenu d'un fichier ?
    Je voudrais lire le contenu de 2 fichiers binaire pour placer leur octets dans un array() byte pour ensuite comparer 2 fichiers de taille identique octet par octer.

    Voici mon code actuel:

    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 File1() as byte
        Dim File2() as byte
        Dim iFileport As Integer
        Dim x As Long
     
        iFileport = FreeFile()
     
        Open Text1.Text For Binary As #iFileport
        File1() = Space(LOF(iFileport))
        Get #iFileport, , File1()
        Close iFileport
     
        iFileport = FreeFile()
     
        Open Text2.Text For Binary As #iFileport
        File2() = Space(LOF(iFileport))
        Get #iFileport, , File2()
        Close iFileport
     
        For x = 0 To UBound(File1())
     
            List1.AddItem Chr(File1(x))
     
        Next x
    Le problème que j'ai c'est que Space double mon array alors quand je le parcours il y a la moitié du array qui n'a rien. J'ai essayé avec Redim File1(lof(ifileport)) as byte mais quand je fais mon get, mon array est vide il n'a que des 0

    Comment faire ça correctement ?

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Il me semble bien qu'il existe une commande DOS pour comparer 2 fichiers octet par octet. Alors tu pourrais l'utiliser dans un Shell( ), non?
    Il faut que je retrouve le nom de cette commande...
    : : : : :

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Comp

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Non non, ce n'était pas une injure, Megaxel...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Oui bien c'est que je voulais faire ma propre fonction pour pouvoir afficher les résultats comme je veux

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut

    Sache, petit poulet marcheur, que j'étais entrain (tchou tchou...) de jouer avec comp... Et je suis franchement déçu par le résultat: j'ai beau modifier les options, il ne me dit pas grand-chose, à part s'ils sont pareils ou différents... Il ne me donne pas les différences, ni où elles se trouvent...
    Et si, AsmCode, tu arrives à le faire marcher comme tu veux, après, tu peux récupérer la sortie la sortie pour personnaliser ton affichage.

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut Re: Comment lire le contenu d'un fichier ?
    Citation Envoyé par AsmCode
    Je voudrais lire le contenu de 2 fichiers binaire pour placer leur octets dans un array() byte pour ensuite comparer 2 fichiers de taille identique octet par octer.

    Voici mon code actuel:

    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 File1() as byte
        Dim File2() as byte
        Dim iFileport As Integer
        Dim x As Long
     
        iFileport = FreeFile()
     
        Open Text1.Text For Binary As #iFileport
        File1() = Space(LOF(iFileport))
        Get #iFileport, , File1()
        Close iFileport
     
        iFileport = FreeFile()
     
        Open Text2.Text For Binary As #iFileport
        File2() = Space(LOF(iFileport))
        Get #iFileport, , File2()
        Close iFileport
     
        For x = 0 To UBound(File1())
     
            List1.AddItem Chr(File1(x))
     
        Next x
    Le problème que j'ai c'est que Space double mon array alors quand je le parcours il y a la moitié du array qui n'a rien. J'ai essayé avec Redim File1(lof(ifileport)) as byte mais quand je fais mon get, mon array est vide il n'a que des 0

    Comment faire ça correctement ?
    ton code fonctionne chez moi avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ...
          ReDim File1(LOF(iFileport) - 1)
           Get #iFileport, , File1()
        Close iFileport
    ...
    ..?


    sinon pour les 2 volatiles ... en plus de comp vous avez aussi la commande fc pour jouer...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Tu dois indiquer le chemin de ton répertoire.

    Open "C:\TonFichier1.txt" For Binary As #iFileport
    etc....
    etc.....
    Open "C:\TonFichier2.txt" For Binary As #iFileport

    jpleroisse

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Oui je sais, ça marche aussi de mon côté comme je disais, mais avec cette ligne: File1() = space(lof(ifileport)) il me met le double de la grosseur du fichier

    j'ai testé avec un fichier de 200 octets et le erray file1() avait 399 élément ..

    Je crois que c'est à cause de l'unicode, mais comment fixer ce problème ?

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par AsmCode
    Oui je sais, ça marche aussi de mon côté comme je disais, mais avec cette ligne: File1() = space(lof(ifileport)) il me met le double de la grosseur du fichier

    j'ai testé avec un fichier de 200 octets et le erray file1() avait 399 élément ..

    Je crois que c'est à cause de l'unicode, mais comment fixer ce problème ?
    en utilisant le redim ça ne marche vraiment pas chez toi ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Points : 61
    Points
    61
    Par défaut
    Avec redim il met bien la bonne taille au tableau de byte, mais quand il fait son get, au lieu d'avoir les octets il met tout à zéro

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je viens de tester ça en VBA Excel:
    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
    Sub test()
      Dim File1() As Byte
      Dim iFileport As Integer
      Dim x As Long
     
      iFileport = FreeFile()
     
      Open "C:\BOOT.INI" For Binary As #iFileport
      ReDim File1(LOF(iFileport) - 1)
      Get #iFileport, , File1()
      Close iFileport
     
      For x = 0 To UBound(File1())
     
        [A1] = [A1] & Chr(File1(x))
     
      Next x
     
    End Sub
    Et ça fonctionne très bien.
    Je retrouve bien le contenu de mon BOOT.INI dans ma cellule A1.

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par AsmCode
    Je crois que c'est à cause de l'unicode, mais comment fixer ce problème ?
    Ca, ça m'étonnerait fort.

    LOF est une longueur en bytes. Quel que soit le contenu.

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Par contre, je constate que cette instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        File1() = Space(LOF(iFileport))
    Crée une array d'une taille double de la longueur du fichier et composée d'une alternance de valeurs 32 et 0.
    A mon avis, il ne faut pas utiliser la fonction Space pour ce cas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2014, 16h56
  2. Réponses: 6
    Dernier message: 29/08/2011, 15h12
  3. Comment Lire le Contenu d'un Fichier PDF
    Par mr.net dans le forum VB.NET
    Réponses: 1
    Dernier message: 05/04/2010, 11h35
  4. Comment lire le contenu d'un fichier texte?
    Par millien dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/05/2009, 12h52
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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