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 :
La fonction "GetValue" me permet d'extraire les valeurs (de ma substring) pour qu'elles puissent être affichées dans ma Listview1.
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>
Voici le code dans lequel je trèpine :
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 "??".
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
LE PROBLEME c'est que lorsque je débogue j'ai une fenêtre qui me dit ceci :
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.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.
Merci d'avance.
Partager