Salut,
j'ai cherché un peu partout, mais je n'ai pas trouvé comment faire ça de manière simple sans tout parcourir. Il doit bien y avoir quelque chose fourni par le framework non ?
Salut,
j'ai cherché un peu partout, mais je n'ai pas trouvé comment faire ça de manière simple sans tout parcourir. Il doit bien y avoir quelque chose fourni par le framework non ?
Dans quel but veux-tu faire cela ?
Parce que moi j'ai utilisé un ArrayList dans une fonction pour avoir tous les fichiers d'un dossier et de ses sous dossiers et il me suffisait de faire ça :
Donc précises pourquoi tu veux transformer un ArrayList en string[]
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach (string file in myArrayList)
PS : Ca serait pas mieux dans Général Dotnet ça ?
Irrlicht .NET CP, premier moteur 3D .NET complet tournant sous Windows, Linux et MacOS
DeusXL Softwares
A Painless lesson is one without any meaning.
bof çà reste un grand classique et effectivement la framework a déjà prévu la transformation d'un Arraylist en tableau de n'importe quel type du moment que cet Arraylist ne contient effectivement que ce seul type.
Donc apparemment tu n'as pas bien cherché
Méthode ArrayList.ToArray
comme je suis plutôt vbciste n'hésites pas à verifier mon C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Type t = Type.GetType("System.String"); string[] tableau = (string[]) MyArrayList.ToArray(t);
PS: je suis d'accord avec DeusXL, tu aurais très bien pu poster ce souci dans le forum General DotNet puisque ce n'est pas spécifique au Web
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
Envoyé par neguibdevrait suffire :)
Code : Sélectionner tout - Visualiser dans une fenêtre à part string[] tableau = myArrayList.ToArray() as string[];
Be wary of strong drink.
It can make you shoot at tax collectors, and miss.
Merci Maniak je ne le connaissais pas du tout en C#, inculte que je suis je ne l'utilisais qu'en Delphi.NetEnvoyé par Maniak
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
Oui, c'est vrai j'aurais pu poster dans Général dotnet, l'habitude de poster dans ce forum
Sinon, merci pour les réponses, je teste demain, j'avais déjà trouvé cette solution sur le net, mais je n'ai pas essayé, car le "as" me paraissait être du VB.net
Je ne connaissais pas bien le transtypage en C#... je vais tester tout ça...
Oui effectivement, ça marche, merci !
cependant, j'ai un autre problème
ma fonction retourne bien un String[]
mais quand j'essaie d'affecter une variable du genre :
String[] maVariable = maFonctionQuiRetourneUnString[];
et qu'enuite j'essaie d'accéder aux éléments par un :
maVariable[0], ça ne fonctionne pas
une idée ?
Essaye de faire ça :
( ou autre chose équivalent si t'es pas en mode console ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 foreach(string str in maVariable) Console.WriteLine(str);
On sait jamais !
Mais sinon le problème est sûrement dans ta fonction qui retourne un string[]... On pourrait en avoir le code ( si ce n'est pas trop long ) ?
Irrlicht .NET CP, premier moteur 3D .NET complet tournant sous Windows, Linux et MacOS
DeusXL Softwares
A Painless lesson is one without any meaning.
Bien sûr
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 public static String[] LireElements (String pathFichier, String[] pathElements) { String sessionId; XmlTextReader lecteur; MemoryStream fluxLecture; byte[] buffer; XmlDocument doc = new XmlDocument(); XmlElement racine; XmlNode noeud; ArrayList elementsTemp; String[] elements; // On se connecte a la base sessionId = lectureBd.connect(bdLogin, bdPass); // On lit le fichier de l'etudiant buffer = Encoding.UTF8.GetBytes(lectureBd.getResource(sessionId, pathFichier , true, false)); // On se deconnecte de la base lectureBd.disconnect(sessionId); // On lit l'element fluxLecture = new MemoryStream(buffer); lecteur = new XmlTextReader(fluxLecture); doc.Load(lecteur); racine = doc.DocumentElement; elementsTemp = new ArrayList(); for (int i = 0; i < pathElements.Length; i++) { noeud = racine.SelectSingleNode(pathElements[i]); elementsTemp.Add(noeud.InnerXml); } elements = new String[elementsTemp.Count]; elements = elementsTemp.ToArray() as String[]; return elements; }
Essayes
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 public static String[] LireElements (String pathFichier, String[] pathElements) { string sessionId; XmlTextReader lecteur; MemoryStream fluxLecture; byte[] buffer; XmlDocument doc = new XmlDocument(); XmlElement racine; XmlNode noeud; ArrayList elementsTemp; // On se connecte a la base sessionId = lectureBd.connect(bdLogin, bdPass); // On lit le fichier de l'etudiant buffer = Encoding.UTF8.GetBytes(lectureBd.getResource(sessionId, pathFichier , true, false)); // On se deconnecte de la base lectureBd.disconnect(sessionId); // On lit l'element fluxLecture = new MemoryStream(buffer); lecteur = new XmlTextReader(fluxLecture); doc.Load(lecteur); racine = doc.DocumentElement; elementsTemp = new ArrayList(); for (int i = 0; i < pathElements.Length; i++) { noeud = racine.SelectSingleNode(pathElements[i]); elementsTemp.Add(noeud.InnerXml); } return (elementsTemp.ToArray() as String[]); }
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
ça marche pas, j'ai toujours une erreur : Object reference not set to an instance of an object.
Je te mets le code que j'utilise pour appeler ma fonction :
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 String[] pathElements = {"/etudiant/identite/nom", "/etudiant/identite/prenom", "/etudiant/identite/age", "/etudiant/identite/nationalite", "/etudiant/identite/sitFamille", "/etudiant/identite/rue1", "/etudiant/identite/rue2", "/etudiant/identite/cp", "/etudiant/identite/ville", "/etudiant/identite/tel", "/etudiant/identite/email"}; String[] elements = Global.LireElements(Global.GetCheminBd(Global.username), pathElements); txtNom.Text = elements.Length.ToString();
Remarque ceci serait pas mal aussi non :
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 public static String[] LireElements (string pathFichier, String[] pathElements) { XmlElement racine; string[] elements; racine = GetRoot(pathFichier); elements = new string[pathElements.Length-1]; for (int i = 0; i < pathElements.Length; i++) { elements[i] = racine.SelectSingleNode(pathElements[i]).InnerXml; } return elements; } private XMLElement GetRoot(string pathFichier) { byte[] buffer; string sessionId; MemoryStream fluxLecture; XmlDocument doc = new XmlDocument(); XmlTextReader lecteur; // On se connecte a la base sessionId = lectureBd.connect(bdLogin, bdPass); // On lit le fichier de l'etudiant buffer = Encoding.UTF8.GetBytes(lectureBd.getResource(sessionId, pathFichier , true, false)); // On se deconnecte de la base lectureBd.disconnect(sessionId); // On lit l'element fluxLecture = new MemoryStream(buffer); lecteur = new XmlTextReader(fluxLecture); doc.Load(lecteur); return doc.DocumentElement; }
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
Oui merci beaucoup, tu as raison, ça marche
j'avais oublié que je connaissais la taille du tableau
de ton idée, j'ai repris le :
Maintenant ça marche ! encore merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 elements = new String[pathElements.Length]; for (int i = 0; i < pathElements.Length; i++) { noeud = racine.SelectSingleNode(pathElements[i]); elements[i] = noeud.InnerXml; } return elements;
ok tant mieux
sinon par rapport à
qui est parti de la proposition de Maniak que j'ai cru sur parole, c'est peut être bien la cause du souci que tu as eu car perso j'utilisai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 elementsTemp.ToArray() as String[];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Type t = Type.GetType("System.String"); string[] tableau = (string[]) MyArrayList.ToArray(t);
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager