Probleme avec la fonction REDIM Preserve

Signaler
Messages postés
35
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
27 avril 2017
-
Messages postés
35
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
27 avril 2017
-
Bonjour à tous,

Je me permets de vous écrire car j'ai un petit souci en VB avec la fonction REDIM Preserve.
Mon programme récupère un fichier texte, le converti en tableau et supprime les lignes qui ne corresponde pas à des critères que je défini de base. Petit Hic, il ne me supprime pas mes lignes.

Je vous joins mon code afin d'expliciter au mieux ma demande:
If TextBox1.Text = "" Then GoTo Fin_Process
'Décomposition du fichier en un tableau de ligne
Dim MonTableauDeLignes() As String = File.ReadAllLines(TextBox1.Text)
'Comptage du nombre de ligne composant le fichier
Dim NbLignes As Integer = MonTableauDeLignes.Count
'Nettoyage du fichier
'Suppression des lignes ne comprenant pas le terme "Variables
Dim t As Integer
For t = NbLignes - 1 To 0 Step -1
'Recherche du texte "Variable" dans la ligne en cours
If InStr(1, MonTableauDeLignes(t), "Variable") = 0 Then
ReDim Preserve MonTableauDeLignes(NbLignes - 2) 'Suppression de la ligne concernée
End If
Next

'Réécriture du fichier de sortie
File.WriteAllLines(TextBox1.Text, MonTableauDeLignes)
Fin_Process:
MessageBox.Show("Aucun fichier selectionné")

2 réponses

Messages postés
14800
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 juin 2021
156
As-tu regardé en pas à pas en espionnant les valeurs ?
Car si tu veux supprimer une ligne au milieu du tableau, tu supprimes uniquement le dernier élément du tableau.
Messages postés
35
Date d'inscription
mercredi 30 juillet 2014
Statut
Membre
Dernière intervention
27 avril 2017

Bonsoir,

En fait, j'ai cassé tout le programme et trouver une solution qui fonctionne:
' on charge toutes les lignes
Dim lines As List(Of String) = File.ReadLines(TextBox1.Text).ToList()
Dim Nblignes As Integer = lines.Count

'Nettoyage du fichier
'Suppression des lignes inutiles
Dim t As Integer
For t = Nblignes - 1 To 0 Step -1
'Recherche du texte "Variable" dans la ligne en cours
If InStr(1, lines(t), "Variable") = 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "External") = 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "Read Only") = 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "BOOL") = 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "Def_inhib_api1") <> 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "Def_inhib_api2") <> 0 Then
lines.RemoveAt(t)
ElseIf InStr(1, lines(t), "Def_inhib_api3") <> 0 Then
lines.RemoveAt(t)
End If
Next

'Réécriture du fichier de sortie
File.WriteAllLines(TextBox1.Text, lines)

Mais maintenant, j'ai un autre souci, je n'arrive pas à construire un tableau 2D à partir d'un fichier texte