List(Of Array) et conversion en VB.NET [Résolu]

CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 13 juil. 2012 à 21:34 - Dernière réponse : NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention
- 14 juil. 2012 à 14:00
Bonjour,

J'extrait d'un fichier Text (+ précisement du genre CSV mais avec un nombre d'éléments variable par ligne)
un objet défini de cette facon: (Ret) soit un tableau de tableau (de string)

Dim Ret As New List(Of Array)

Dim lines As String() = System.IO.File.ReadAllLines("C:\Essai.CSV")
For Each ligne In lines ' Extraction des chaines par lignes selon le séparateur ";"
   Dim Cells As Array = Split(ligne,";").ToArray
   Ret.Add(Cells)
Next


Cette étape étant effectué, j'essai réaliser l'inverse, soit sauvegarder cet objet en fichier Texte.

Dim Texte As New List(Of String)
For Each R In Ret ' Epluche les lignes selon le séparateur 
   Dim Lig As String = Join(R, ";")
   Texte.Add(Lig)
Next
If File.Exists("C:\Essai2.CSV") Then IO.File.Delete("C:\Essai2.CSV")
System.IO.File.WriteAllLines("C:\Essai2.CSV", Texte.ToArray)


Ici, la fonction Join n'accepte pas la variable R. Comment la convertir pour qu'elle s'execute?
ou convertir une variable defini comme un array en array de string? ou simplement trouver + simple sachant que ce n'est pas un tableau. Merci
Cordialement CGSI3
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Utilisateur anonyme - 14 juil. 2012 à 01:21
3
Merci
Bonsoir,
A moins que je n'utilise des boucles for pour l'extraire sachant que la déclaration Dim retArray As list(Of string()) n'est pas possible en Vb.Net.

Bien sur que si on peut et sans boucle :
Dim MaListe As New List(Of List(Of String))

Dim Liste1 As New List(Of String)
Liste1.AddRange({"a1", "b1"})

Dim Liste2 As New List(Of String)
Liste2.AddRange({"a2", "b2"})

MaListe.AddRange({Liste1, Liste2})

MessageBox.Show(MaListe.Item(0).Item(1))

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 juil. 2012 à 21:43
0
Merci
IL y a une raison particulière pour déclarer Cells comme un Array plutôt qu'un tableau de string ?


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 13 juil. 2012 à 21:53
0
Merci
Non casy, je donnais cette solution mais je dois pouvoir remplacer cet array en string() et l adapter
Commenter la réponse de CGSI3
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 juil. 2012 à 22:00
0
Merci
Essaye donc pour voir si ça résout ton problème

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 13 juil. 2012 à 22:13
0
Merci
Seulement si je fais cela je dois trouver une solution pour une de mes fonction qui récupère
les données d'un DataTable (pour afficher avec un datagridview le fichier) et convertir dans ce code Tab.Rows(i).ItemArray en string()


Public Function Convert_Data(ByRef Tab As DataTable) As List(Of Array)
' Renvoi un List(Of Array) a partir d'un datatable
Dim retArray As New List(Of Array)
For i As Integer = 0 To Tab.Rows.Count - 1
   retArray.Add(Tab.Rows(i).ItemArray)
Next
return retArray


A moins que je n'utilise des boucles for pour l'extraire sachant que la déclaration Dim retArray As list(Of string()) n'est pas possible en Vb.Net.
Commenter la réponse de CGSI3
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 13 juil. 2012 à 22:29
0
Merci
D'un autre coté un String() hérite d'un Array, donc u dois pouvoir faire un simple caast de Array vers String()

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 14 juil. 2012 à 00:35
0
Merci
Bonjour,

Un, cast est peut être possible, mais typer directement est toujours mieux.

Sinon, lors du Join, ajoutes un .ToArray à R.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
CGSI3 417 Messages postés vendredi 22 février 2008Date d'inscription 7 janvier 2018 Dernière intervention - 14 juil. 2012 à 12:12
0
Merci
Bonjour,
Banana j ai mis réponse accepté car c est une solution intéressante,
j ai pas réussi a faire le cast et le R.Toarray ne fonctionne pas
J'ai également cherché du coté de Array.ConvertAll mais je ne sais pas bien l'utiliser.
Merci a tous pour votre aide.
Commenter la réponse de CGSI3
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 14 juil. 2012 à 14:00
0
Merci
Bonjour,

"j ai pas réussi a faire le cast et le R.Toarray ne fonctionne pas "
List(Of String)
le .ToArray retournera un tableau de String, donc, ça fonctionne.
Sinon, précise ton environnement de dev.

Concernant le Cast, il est préférable de typer correctement, si tu utilises un tableau de String, tu le déclare directement.

Concernant le List(Of String()), je pense que ça doit passer.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.