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 543
    Points
    15 543
    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 543
    Points
    15 543
    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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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