Bonjour,

C'est la première fois que je poste et je vais vous exposer le problème que j'ai rencontré et sur lequel je me heurte depuis un petit moment déjà :

Mon projet possède ces contrôles :

1 ListView1 avec 5 colonnes
1 bouton

Côté fonction :

La fonction "GetInfoWim" me permet d'extraire les informations des images contenues dans mon "install.wim" et retourne le résultat sous forme d'un substring (avec balisage xml) qui est le suivant :

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<WIM>
  <TOTALBYTES>2131301648</TOTALBYTES>
  <IMAGE INDEX="1">
    <DIRCOUNT>9356</DIRCOUNT>
    <FILECOUNT>46456</FILECOUNT>
    <TOTALBYTES>7819543515</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CA0443</HIGHPART>
      <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CA0467</HIGHPART>
      <LOWPART>0xF250D4BA</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME>
      <EDITIONID>Starter</EDITIONID>
      <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
      <HAL>acpiapic</HAL>
      <PRODUCTTYPE>WinNT</PRODUCTTYPE>
      <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
      <LANGUAGES>
        <LANGUAGE>fr-FR</LANGUAGE>
        <DEFAULT>fr-FR</DEFAULT>
      </LANGUAGES>
      <VERSION>
        <MAJOR>6</MAJOR>
        <MINOR>1</MINOR>
        <BUILD>7600</BUILD>
        <SPBUILD>16385</SPBUILD>
        <SPLEVEL>0</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 STARTER</NAME>
    <DESCRIPTION>Windows 7 STARTER</DESCRIPTION>
    <FLAGS>Starter</FLAGS>
    <HARDLINKBYTES>2994591629</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Édition Starter</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Édition Starter</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="2">
    <DIRCOUNT>9372</DIRCOUNT>
    <FILECOUNT>46575</FILECOUNT>
    <TOTALBYTES>7847331844</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CA0443</HIGHPART>
      <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CA0468</HIGHPART>
      <LOWPART>0x07E75FA6</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME>
      <EDITIONID>HomeBasic</EDITIONID>
      <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
      <HAL>acpiapic</HAL>
      <PRODUCTTYPE>WinNT</PRODUCTTYPE>
      <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
      <LANGUAGES>
        <LANGUAGE>fr-FR</LANGUAGE>
        <DEFAULT>fr-FR</DEFAULT>
      </LANGUAGES>
      <VERSION>
        <MAJOR>6</MAJOR>
        <MINOR>1</MINOR>
        <BUILD>7600</BUILD>
        <SPBUILD>16385</SPBUILD>
        <SPLEVEL>0</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEBASIC</NAME>
    <DESCRIPTION>Windows 7 HOMEBASIC</DESCRIPTION>
    <FLAGS>HomeBasic</FLAGS>
    <HARDLINKBYTES>3013447279</HARDLINKBYTES>
    <DISPLAYNAME>Windows*7 Édition Familiale Basique</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows*7 Édition Familiale Basique</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="3">
    <DIRCOUNT>9589</DIRCOUNT>
    <FILECOUNT>47584</FILECOUNT>
    <TOTALBYTES>8289294401</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CA0443</HIGHPART>
      <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CA0468</HIGHPART>
      <LOWPART>0x19AEC8C8</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME>
      <EDITIONID>HomePremium</EDITIONID>
      <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
      <HAL>acpiapic</HAL>
      <PRODUCTTYPE>WinNT</PRODUCTTYPE>
      <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
      <LANGUAGES>
        <LANGUAGE>fr-FR</LANGUAGE>
        <DEFAULT>fr-FR</DEFAULT>
      </LANGUAGES>
      <VERSION>
        <MAJOR>6</MAJOR>
        <MINOR>1</MINOR>
        <BUILD>7600</BUILD>
        <SPBUILD>16385</SPBUILD>
        <SPLEVEL>0</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEPREMIUM</NAME>
    <DESCRIPTION>Windows 7 HOMEPREMIUM</DESCRIPTION>
    <FLAGS>HomePremium</FLAGS>
    <HARDLINKBYTES>3393031780</HARDLINKBYTES>
    <DISPLAYNAME>Windows*7 Édition Familiale Premium</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows*7 Édition Familiale Premium</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="4">
    <DIRCOUNT>9645</DIRCOUNT>
    <FILECOUNT>48012</FILECOUNT>
    <TOTALBYTES>8171143050</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CA0443</HIGHPART>
      <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CA0468</HIGHPART>
      <LOWPART>0x2F79C770</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME>
      <EDITIONID>Professional</EDITIONID>
      <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
      <HAL>acpiapic</HAL>
      <PRODUCTTYPE>WinNT</PRODUCTTYPE>
      <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
      <LANGUAGES>
        <LANGUAGE>fr-FR</LANGUAGE>
        <DEFAULT>fr-FR</DEFAULT>
      </LANGUAGES>
      <VERSION>
        <MAJOR>6</MAJOR>
        <MINOR>1</MINOR>
        <BUILD>7600</BUILD>
        <SPBUILD>16385</SPBUILD>
        <SPLEVEL>0</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 PROFESSIONAL</NAME>
    <DESCRIPTION>Windows 7 PROFESSIONAL</DESCRIPTION>
    <FLAGS>Professional</FLAGS>
    <HARDLINKBYTES>3259640830</HARDLINKBYTES>
    <DISPLAYNAME>Windows*7 Professionnel</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows*7 Professionnel</DISPLAYDESCRIPTION>
  </IMAGE>
  <IMAGE INDEX="5">
    <DIRCOUNT>9675</DIRCOUNT>
    <FILECOUNT>48161</FILECOUNT>
    <TOTALBYTES>8329369824</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01CA0443</HIGHPART>
      <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01CA0468</HIGHPART>
      <LOWPART>0x3F3E34A2</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
      <ARCH>0</ARCH>
      <PRODUCTNAME>Microsoft® Windows® Operating System</PRODUCTNAME>
      <EDITIONID>Ultimate</EDITIONID>
      <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
      <HAL>acpiapic</HAL>
      <PRODUCTTYPE>WinNT</PRODUCTTYPE>
      <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
      <LANGUAGES>
        <LANGUAGE>fr-FR</LANGUAGE>
        <DEFAULT>fr-FR</DEFAULT>
      </LANGUAGES>
      <VERSION>
        <MAJOR>6</MAJOR>
        <MINOR>1</MINOR>
        <BUILD>7600</BUILD>
        <SPBUILD>16385</SPBUILD>
        <SPLEVEL>0</SPLEVEL>
      </VERSION>
      <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 ULTIMATE</NAME>
    <DESCRIPTION>Windows 7 ULTIMATE</DESCRIPTION>
    <FLAGS>Ultimate</FLAGS>
    <HARDLINKBYTES>3416953473</HARDLINKBYTES>
    <DISPLAYNAME>Windows*7 Édition Intégrale</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows*7 Édition Intégrale</DISPLAYDESCRIPTION>
  </IMAGE>
</WIM>
La fonction "GetValue" me permet d'extraire les valeurs (de ma substring) pour qu'elles puissent être affichées dans ma Listview1.

Voici le code dans lequel je trèpine :

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
Imports Microsoft.VisualBasic.CompilerServices
Imports System.Runtime.CompilerServices
 
 
 
        Dim string1 As String = Nothing
        Dim string2 As String = Nothing
        Dim string3 As String = Nothing
        Dim string4 As String = Nothing
        Dim i1 As Integer = 0
        Dim string5 As String = Nothing
        Dim object1 As Object = Nothing
        Dim string6 As String = Nothing
        Dim listViewItem1 As ListViewItem = Nothing
        Dim exception1 As Exception = Nothing
        Dim objectArray1 As Object() = Nothing
        Dim iEnumerator1 As IEnumerator = Nothing
 
        Try
            string1 = "??"
            string2 = "??"
            i1 = 0
            object1 = RuntimeHelpers.GetObjectValue(Module1.CWIM_GetWimInfo(TextBox1.Text))
            Try
                objectArray1 = New Object() {"</"}
                iEnumerator1 = DirectCast(NewLateBinding.LateGet(object1, DirectCast(Nothing, Type), "Split", objectArray1, DirectCast(Nothing, String()), DirectCast(Nothing, Type()), _
                 DirectCast(Nothing, Boolean())), IEnumerable).GetEnumerator()
                GoTo L_02BA
L_0183:
                If ((Operators.CompareString(string4, DirectCast(Nothing, String), False) <> 0) AndAlso (Operators.CompareString(string3, DirectCast(Nothing, String), False) <> 0)) AndAlso (Operators.CompareString(string5, "", False) <> 0) Then
                    listViewItem1 = New ListViewItem()
                    listViewItem1.Text = string4
                    If (Operators.CompareString(string2, "??", False) = 0) AndAlso (Operators.CompareString(string1, "??", False) = 0) Then
                        listViewItem1.Group = ListView1.Groups(1)
                    Else
                        listViewItem1.Group = ListView1.Groups(0)
                    End If
                    Dim listViewSubItem1 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(string3)
                    Dim listViewSubItem2 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(string1)
                    Dim listViewSubItem3 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(string2)
                    Dim listViewSubItem4 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(string5)
                    Dim listViewSubItem5 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(Conversions.ToString(DirectCast((ListView1.Items.Count + 1), Integer)))
                    Dim listViewSubItem6 As ListViewItem.ListViewSubItem = listViewItem1.SubItems.Add(TextBox1.Text)
                    Dim listViewItem2 As ListViewItem = ListView1.Items.Add(listViewItem1)
                    string4 = DirectCast(Nothing, String)
                    string3 = DirectCast(Nothing, String)
                    string1 = "??"
                    string2 = "??"
                    string5 = ""
                End If
L_02BA:
                While iEnumerator1.MoveNext()
                    string6 = Conversions.ToString(iEnumerator1.Current)
                    string6 = string6.Replace(Chr(13), "").Replace(Chr(10), "")
                    If string6.StartsWith("NAME>") Then
                        string4 = Conversions.ToString(Module1.GetValue(string6))
                    End If
                    If string6.StartsWith("DESCRIPTION>") Then
                        string3 = Conversions.ToString(Module1.GetValue(string6))
                    End If
                    If string6.StartsWith("ARCH>") Then
                        If Operators.ConditionalCompareObjectEqual(Module1.GetValue(string6), "0", False) Then
                            string1 = "x86"
                        End If
                        If Operators.ConditionalCompareObjectEqual(Module1.GetValue(string6), "9", False) Then
                            string1 = "amd64"
                        End If
                    End If
                    If string6.StartsWith("BUILD>") Then
                        string2 = Conversions.ToString(Module1.GetValue(string6))
                    End If
                    If string6.StartsWith("TOTALBYTES>") Then
                        If i1 <> 0 Then
                            string5 = Module1.BytestoString(Conversions.ToLong(Module1.GetValue(string6)))
                            GoTo L_0183
                        End If
                        i1 = 1
                    End If
                    GoTo L_0183
                End While
            Finally
                If TypeOf iEnumerator1 Is IDisposable Then
                    TryCast(iEnumerator1, IDisposable).Dispose()
                End If
            End Try
        Catch exception2 As Exception
            exception1 = exception2
            ProjectData.SetProjectError(exception1)
            Dim msgBoxResult1 As MsgBoxResult = Interaction.MsgBox(exception1.Message, MsgBoxStyle.ApplicationModal, Nothing)
            ProjectData.ClearProjectError()
        End Try
J'ai choisi cette méthode pour rechercher les occurences qui m'intéresse car il peut arriver que lors du 1er passage une des valeurs soit manquante et dans ce cas il la remplace par un "??".

LE PROBLEME c'est que lorsque je débogue j'ai une fenêtre qui me dit ceci :

L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la colection.
Nom du paramètre : index.
Je ne voit pas d'ou provient mon erreur. Pouvez-vous m'aiguiller s'il vous plait car là je sèche (oui il s'agit d'un problème d'index mùais OU???!!) et j'ai le cibouleau en feu.

Merci d'avance.