Lire automatique listview1 [Résolu]

Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
-
Bonjour,

voici le code de lecture :
Private Sub ReadFile(FilePath As String)

        ListView1.Items.Clear()
        Dim input As New FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read)
        Dim reader As New BinaryReader(input)
        reader.BaseStream.Position = &H10
        For i = 0 To 16 <= arrêter de lire quand il y a 16 zéro à la place 16 position du fichier
            Dim position As Long = reader.BaseStream.Position
            Dim code As String = BitConverter.ToString(reader.ReadBytes(8)).Replace("-", "")
            Dim couleur As String = BitConverter.ToString(reader.ReadBytes(2)).Replace("-", "")
            reader.BaseStream.Position += 14
            Dim lvi As New ListViewItem("&H" & position.ToString("X4"))
            lvi.SubItems.AddRange(New String() {code, couleur})
            ListView1.Items.Add(lvi)
        Next
        reader.Close()
        input.Close()
End Sub


voici en image mon fichier DATA :


Je voudrais savoir si c'est possible arrêter de lire mon fichier a la fin quand il y a 16 zéro du fichier data?

Merci,
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
1
Merci
et qu'a-t-on pas compris ?
As-tu compris mon dernier message ?

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
1
Merci
1) remplace le boucle For Next par une boucle Do loop !

2) If code = "0000000000000000" then exit Do pour sortir de la boucle

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
1
Merci
2) If code = "0000000000000000" then exit Do pour sortir de la boucle

il suufit de mettre cette ligne à la bonne place dans le code : juste après la lecture de la variable Code par exemple
 Dim code As String = BitConverter.ToString(reader.ReadBytes(8)).Replace("-", "")
If code = "0000000000000000" then exit Do
et on sort de la boucle sans afficher les 0000000000000000

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
0
Merci
Salut !
Est-ce que cela doit s'arrêter lorsque la valeur du code de la voiture est = à "0000000000000000" ?
Attention code est une chaine de caractères !

un simple
If code = "0000000000000000" then exit for
devrait suffire je pense ! et tu sors de la boucle
vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68 -
Il faudrait aussi nous en dire un peu plus sur la structure de ton fichier : quelles sont les données qu'il contient et leurs types de données ainsi que le nombre d'octets de chacun des paramètres
Commenter la réponse de vb95
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
0
Merci
salut,

quand je lie mon fichier de départ de la position &H10 . il arrêt de lire a la fin quand il y a 16 zéros("0000000000000000") <= comme tu vois la position 1A0 en photo à la place 16 position.

For i = 0 To arrêter de lire quand il y a 16 zéro


Pouvez-vous me comment on écrire avec le code lecture?
Commenter la réponse de hacker591
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68
0
Merci
Salut
les 16 zéros du code de la voiture sont en 1A8 et non 1A0 ! chaque bloc de données fait 24 octets : 8 pour le code de la voiture, 2 pour la couleur et 14 autres qui servent à quoi on ne sait pas !
On a fait une boucle de 0 à 16 pour lire 17 codes voitures et 17 couleurs . et si le fichier contient 20 codes voiture et 20 couleurs !
et si on modifie le code de lecture il faut aussi modifier le code d'écriture !
Commenter la réponse de vb95
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
0
Merci
salut,

vous avez pas compris ce que je voudrais dire mon problème arrêt de lire a la fin quand il y a 16 zéro.

voici un exemple en photo :


j'ai ajouter dans le code :
For i = 0 to 17
Commenter la réponse de hacker591
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
0
Merci
oui, j'ai compris ce que tu as dit. je t'explique 8 pour le code de la voiture, 2 pour la couleur, 2 activer le code déblocage dans le garage.

je voudrais savoir comme faire a la fin de la position. il arrêt de lire çi il y a des zéro ?
Commenter la réponse de hacker591
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
0
Merci
Merci ça fonctionne correctement ce que je chercher. une dernière question : je voudrais si c'est possible ne pas afficher dans listview1 les zéros a la fin.

voici en image :


Merci de votre réponse.
Cordialement,
Commenter la réponse de hacker591
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
0
Merci
salut,

Merci encore VB95. ce que je chercher pour lire automatique mon fichier DATA.

Merci a toi Vb95.

Cordialement,
Commenter la réponse de hacker591