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 ?
Version imprimable
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:foreach (string file in myArrayList)
PS : Ca serait pas mieux dans G�n�ral Dotnet �a ?
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� :lol:
:arrow: M�thode ArrayList.ToArray
comme je suis plut�t vbciste n'h�sites pas � verifier mon C# :wink:Code:
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 :)
Citation:
Envoy� par neguib
devrait suffire :)Code:string[] tableau = myArrayList.ToArray() as string[];
Merci Maniak je ne le connaissais pas du tout en C#, inculte que je suis je ne l'utilisais qu'en Delphi.Net :?Citation:
Envoy� par Maniak
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:
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 ) ?
Bien s�r :)
Code:
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:
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[]); }
�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:
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:
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; }
Oui merci beaucoup, tu as raison, �a marche :)
j'avais oubli� que je connaissais la taille du tableau :P
de ton id�e, j'ai repris le :
Maintenant �a marche ! encore merci !Code:
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'utilisaiCode:
1
2 elementsTemp.ToArray() as String[];
Code:
1
2
3 Type t = Type.GetType("System.String"); string[] tableau = (string[]) MyArrayList.ToArray(t);