ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
397
397
EMPFEHLEN
-
19.09.07 20:40 #1
Hallo Zusammen,
da ich eigentlich bisher keinen Hashtable nutzen musste, ist mir aufgefallen, dass Schleifen und Hashtable ein komisches Verhältnis zueinander haben. Anscheinend sind alle Schleifen nur ein Wrapper um den Hashtable und man kann nicht mehr darin schreiben.
Welche Möglichkeit habe ich nun, z.B. 30 Einträge in den Table zu bekommen, ohne 30x add schreiben zu müssen?
Asterix
-
Ich versteh das Problem nicht ganz.
Das funktioniert doch einwandfrei!
Code csharp:1 2 3 4 5 6 7 8 9
Hashtable ht = new Hashtable(); for (int i = 0; i < 30; i++) { ht.Add(i, "val" + i.ToString()); } for (int i = 0; i < 30; i++) { Console.WriteLine(ht[i]); }
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
20.09.07 13:45 #3
Hi,
aber irgendwas mache ich falsch. Ich komme aber nicht dahinter.
Ich habe einen TreeView in dem ich das DateiSystemabbilde.
Bei TreeAfterSelect habe ich folgenden Codeschnipsel :
Darin lade ich im ListView die Image-Dateien, die im angegebenen Verzeichnis sind. Gleichzeitig fülle ich die ArrayList 'FileList' mit den Dateinamen und den Hashtable. Doch das scheint nicht zu klappen. Der Hashtable ist immer leer.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
this.FileList.Clear(); foreach(string file in Directory.GetFiles(e.Node.FullPath)) { // MessageBox.Show(file.Substring(file.LastIndexOf(".")+1)); if(file.Substring(file.LastIndexOf(".")+1).ToLower() == "bmp" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "jpg" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "jpeg" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "gif" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "png" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "ico" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "emf" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "wmf" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "tif" || file.Substring(file.LastIndexOf(".")+1).ToLower() == "tiff") { this.FileList.Add(file); } } //--- descript.ion Hashtable erstellen nach Vezeichniswechsel this.bildBeschreibung = new Hashtable(FileList.Count); for(int i=0;i<FileList.Count-1;i++) { this.bildBeschreibung.Add(FileList[i],""); }
und dann habe ich noch einen MenueItem, wo ich einen Dialog aufrufe, der ein Textfeld einthält, dass ich verwende (bildBeschreibung ist übrigens der Hashtable) :
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
void MnuDateiBildBeschreibungClick(object sender, EventArgs e) { string pfad = this.treeView1.SelectedNode.FullPath; if(pfad.Length > 3 && pfad.Substring(2,1) == @"\") pfad = pfad.Remove(3,1); TextWriter tw = new StreamWriter(pfad+@"\descript.ion"); Bildbeschreibung bbs = new Bildbeschreibung(this.lvFiles.SelectedItems[0].Text); DialogResult dr = bbs.ShowDialog(); if(dr == DialogResult.OK) { if(this.bildBeschreibung.ContainsKey(this.lvFiles.SelectedItems[0].Text) == true) { this.bildBeschreibung[this.lvFiles.SelectedItems[0].Text] = bbs.txtBeschreibung.Text; MessageBox.Show(this.bildBeschreibung[this.lvFiles.SelectedItems[0].Text].ToString()); } string line; IDictionaryEnumerator Enumerator = this.bildBeschreibung.GetEnumerator(); while (Enumerator.MoveNext()) { if(Enumerator.Value.ToString() != "") { line = "\""+Enumerator.Key.ToString()+"\" "+Enumerator.Value.ToString(); tw.WriteLine(line); } } tw.Flush(); tw.Close(); } }
Nach der Rückgabe sollte in der Datei 'descript.ion' eine Beschreibung stehen. Doch das tut es nicht. Ich habe nach der Abfrage bildBeschreibung.ContainsKey eine MessageBox eingebaut, doch die wird nicht ausgegeben, was soviel bedeutet, dass der Eintrag gar nicht gemacht wurde, was mich auf 'Hashtable.add in Schleife geht nicht' gebracht hat.
Also, wo könnte mein Fehler liegen?
Asterix
-
21.09.07 16:24 #4
Hallo Leute,
ich habe meinen Fehler gefunden.
in 'FileList' habe ich den kompletten Pfad aufgenommen und im Hashtable habe ich nur nach dem DAteinamen gesucht. Klar, dass ich den Key nicht finden konnte.
Manchmal findet man den Wald vor lauter Bäumen nicht
Asterix
Ähnliche Themen
-
Compiler geht nicht if-schleife rein
Von desaster0505 im Forum JavaAntworten: 4Letzter Beitrag: 15.01.07, 18:39 -
Bannerrotation-Schleife geht nicht
Von Cusco im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 19.03.06, 12:15 -
Update Query in einer for-Schleife geht nicht
Von cameeel im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 04.01.06, 07:20 -
Variable[i+1] in for-Schleife geht nicht
Von Flolei im Forum Flash PlattformAntworten: 6Letzter Beitrag: 22.11.04, 17:42 -
[C++ Builder 6] geht nicht in for-schleife
Von Krany im Forum C/C++Antworten: 3Letzter Beitrag: 15.09.03, 22:37





Zitieren

Login





