Erreur : La référence d'objet n'est pas définie à une instance d'un objet.

cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022 - 25 août 2007 à 15:15
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 - 25 août 2007 à 21:51
Bonjour à tous,

J'ai ce type d'erreur dans mon code :
La référence d'objet n'est pas définie à une instance d'un objet.
Je souhaite lire un fichier dans un listview
Merci pour vos renseignements
A+

voici mon code :

'Lecture du fichier ouvert par la boite de dialogue

Dim fs
As FileStream =
New FileStream(OpenFileDialog1.FileName, FileMode.Open)

Dim li
As ListViewItem

Dim TempString
As
StringTempString = Hex(fs.ReadByte())

If Len(TempString) < 2
ThenTempString =

"0" & TempString

End
Ifli.SubItems.Add(TempString)

8 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 août 2007 à 15:24
li est déclaré mais pas instancié. Il n'existe pas.

Il faut que fasse quelque part un New ListViewItem

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
25 août 2007 à 15:37
Merci Casy pour ton aide

Mais j'ai rien dans le listview !

Pourtant Tempstring contient bien le 1er octet de mon fichier soit "AA"
A+
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 août 2007 à 16:06
Alors reprenons depuis le début.

Un ListView est constituer d'une collection d'items. Chacun de ces item est un ListViewItem (les lignes en mode détail)). Chacun de ces ListViewItem sont eux même constituer de l'item lui-même et éventuellement d'une collection de SubItems. L'item constitue la 1er colonne en mode détail et les subitems constitus les colonnes suivantes.

Donc dans ton cas, tu veux remplir les subitem d'un ListViewItem, mais il faut d'abord le créer. Tu as un message d'erreur parce li (ton ListViewItem) est certes déclaré, mais n'est à aucun moment créé (instancié). Il te faut quelque part le créer avec un instruction New ListViewItem. Le mieux étant de le faire lors de la déclaration Dim li
As New ListViewItem

Ensuite une fois que ton ListViewItem est rempli de tous ses SubItems, il te faudra le rajouter à la collection d'items de ton ListView pour qu'il y apparaisse.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
25 août 2007 à 16:11
Salut, normale que tu n'est rien dans ton listview, tu le créer au moment de l'execution.

Pour ton erreur d'instanciation, il faut faire :

Dim li As New ListViewItem

Mais je vois pas trop pourquoi tu fait ca. Pourquoi ne pas plutot faire : (en supposant que ta listview s'appelle lv1)

Dim fs As IO.FileStream = New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
Dim TempString As String

TempString = Hex(fs.ReadByte())
If Len(TempString) < 2 Then
    TempString = "0" & TempString
End If
lv1.Items.Add(TempString)

A plus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
25 août 2007 à 16:18
Merci Purbonheur pour ta réponse mais mon listview est deja cree sur ma form1 avec mes entetes lignes et colonnes
et j'ai toujours rien qui s'affiche
A+
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
25 août 2007 à 16:26
"mon listview est deja cree sur ma form1"

Ok, alors pourqu'elle raisons obscures tu ne rajoute pas tes données directement dans ton listview au lieu de passer par un nouveau ListViewItem comme tu essai de faire ?

ListView1.Items.Add(TempString)

me semble plus direct.
0
cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022
25 août 2007 à 17:45
Mes données n'apparaisent pas sur le listview
Je ne comprends pas pourquoi

ListView1.Items.Add(TempString) 
J'affiche uniquement le 1ere colonne
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
25 août 2007 à 21:51
Salut, quelque chose me dit que tu n'a pas lu le post de Casy.
Si tu veux remplir les colonnes de ton listview il faut que tu parcours la collection de collection d'items.
Ton listview a une propriété Items, qui est une collection d'objet. Ca représente les données dans la premiere colonne.
à chaque fois que tu fait ListView1.Items.Add(TempString) tu rajoute une ligne.
Si tu veux remplire sur une ligne, il faut que tu récupère l'objet dans la colonne précédente et que tu rajoute un objet dans sa collection subItems.

Dim fs As IO.FileStream = New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
Dim TempString As Integer
Dim SubItem As ListViewItem = Nothing

If ListView1.Items.Count > 0 Then SubItem = ListView1.Items(ListView1.Items.Count - 1)

TempString = fs.ReadByte()
If Len(TempString) < 2 Then
    TempString = "0" & TempString
End If
If SubItem IsNot Nothing Then
            SubItem.SubItems.Add(TempString)
Else
            ListView1.Items.Add(TempString)
End If

Il faut que tu adapte l'exemple à se que tu veux faire.

A plus.
0
Rejoignez-nous