24. Juni 200916 j Moin moin, ich möchte gerne eine Array.List mit den letzten Zugriffszeiten mehrerer Dateien füllen. Dafür benutze ich folgenden Code: DateTime ldtLstAcs = DateTime.Now; for (int i2 = 0; i2 < SelectedItems.Count; i2++) { ldtLstAcs = File.GetLastAccessTime(MapPathSecure("/source/" + SelectedItems[i2])); ArrayList lastAccess = new ArrayList(); [COLOR="Red"]foreach[/COLOR] (ListItem itm2 in [COLOR="Red"]ldtLstAcs[/COLOR]) { lastAccess.Add(itm2.Value); } } Das Problem dabei ist nur, dass Foreach mit dem Date.Time der variablen nicht klar kommt..... Er gibt mir da folgenden Fehler: Eine foreach-Anweisung kann nicht für Variablen vom Typ "System.DateTime" verwendet werden, da "System.DateTime" keine öffentliche Definition für "GetEnumerator" enthält. Vill. kann mir ja einer helfen und sagen was ich anders machen muss! Danke gruß Horstiii
24. Juni 200916 j ArrayList ist aus System.Collections. Und bei den "alten" Collections brauch foreach Objekte, die einen Enumerator implementieren. Nimm doch stattdessen folgenden Code ab .NET 2.0 aus System.Collections.Generic: List<DateTime> liste = new List<DateTime>(); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); foreach ( DateTime dt in liste ) Console.WriteLine(dt);
24. Juni 200916 j ArrayList ist aus System.Collections. Und bei den "alten" Collections brauch foreach Objekte, die einen Enumerator implementieren. Falsch. Foreach braucht immer ein IEnumerable-Object. DateTime implementiert IEnumerable nur nicht. Nix mit alt oder neu.
24. Juni 200916 j Aufjedenfall funktioniert die Lösung von VaNaTiC !! Dankeschön Und da hab ich direkt noch eine Frage..... und zwar wie kann ich das machen dass er mir alle heraussucht die älter als z.b. 2 Tage sind.
24. Juni 200916 j Nach List<DateTime> liste = new List<DateTime>(); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); foreach ( DateTime dt in liste ) Console.WriteLine(dt); kannst du es mit DateTime vorgestern= System.DateTime.Now.Date.AddDays(-2); foreach ( DateTime dt in liste ) { if (dt.Date <= vorgestern) // vllt. <, je nachdem was du willlst { Console.WriteLine(dt); } } versuchen. Aber auch ein blick in die Hilfe (VS 2008 cursor auf "DateTime" und mutig auf [F1] drücken) hätte sicher geholfen. Viel spaß. p.s.: wenn dir foreach nicht performant genug erscheint, kannst du auch Delegates benutzen p.p.s.: Ja, DateTime ist nicht IEnumerable, aber List<T> schon... edit p.p.s.: DateTime.Date ist vllt. angebrachter, wenn es dir ums Datum geht, soll auch die Zeit verglichen werden, nutze DateTime (z.B. Heute ist 18h Vorgesten um 17h soll mit angezeigt werden), aber auch hier hilft die Hilfe, oder ein Breakpoint (VS 2008 [F9]) fürs Verständnis. /edit Bearbeitet 24. Juni 200916 j von Kosinator
24. Juni 200916 j Falsch. Foreach braucht immer ein IEnumerable-Object. DateTime implementiert IEnumerable nur nicht. Nix mit alt oder neu. Das ist nicht ganz richtig. List<T> implementiert IEnumerable<of T>.
25. Juni 200916 j Das ist nicht ganz richtig. List<T> implementiert IEnumerable<of T>. Ich hab nirgendswo das Gegenteil behauptet...
25. Juni 200916 j Ich hab nirgendswo das Gegenteil behauptet... Stimmt, nach eingehender Prüfung des Gesprächsverlaufs, habe ich meine Fehlinterpretation erkannt :upps
26. Juni 200916 j Nach List<DateTime> liste = new List<DateTime>(); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); liste.Add(DateTime.Now); foreach ( DateTime dt in liste ) Console.WriteLine(dt); kannst du es mit DateTime vorgestern= System.DateTime.Now.Date.AddDays(-2); foreach ( DateTime dt in liste ) { if (dt.Date <= vorgestern) // vllt. <, je nachdem was du willlst { Console.WriteLine(dt); } } versuchen. Aber auch ein blick in die Hilfe (VS 2008 cursor auf "DateTime" und mutig auf [F1] drücken) hätte sicher geholfen. Viel spaß. p.s.: wenn dir foreach nicht performant genug erscheint, kannst du auch Delegates benutzen p.p.s.: Ja, DateTime ist nicht IEnumerable, aber List<T> schon... edit p.p.s.: DateTime.Date ist vllt. angebrachter, wenn es dir ums Datum geht, soll auch die Zeit verglichen werden, nutze DateTime (z.B. Heute ist 18h Vorgesten um 17h soll mit angezeigt werden), aber auch hier hilft die Hilfe, oder ein Breakpoint (VS 2008 [F9]) fürs Verständnis. /edit danke. aber ich habe halt eine CheckBoxList wo dateien aufgeführt werden..... nun habe ich unten noch eine checkbox hingemacht, wenn diese angehakt ist, sollen oben alle dateien deren letzter zugriff älter als 2 tage ist angehackt werden..... wie mach ich das am besten?
26. Juni 200916 j danke. aber ich habe halt eine CheckBoxList wo dateien aufgeführt werden..... nun habe ich unten noch eine checkbox hingemacht, wenn diese angehakt ist, sollen oben alle dateien deren letzter zugriff älter als 2 tage ist angehackt werden..... Wie meinst du das genau? for (int i = 0; i < checkedListBox1.Items.Count; i++) { ((CheckBox)checkedListBox1.Items[i]).Checked = (anDateiGebundenesItem).DateTime.Date <= System.DateTime.Now.Date.AddDays(-2); } so etwas, oder mehr eine "normale Liste" mit Checkboxen davor (nicht empfehlenswert), oder Checkboxen mit Dateinamen im Text-Value ? --- mehr Infos, dann helfe ich gerne (vllt Codeschnipsel?) --- gruß
26. Juni 200916 j Wie meinst du das genau? --- mehr Infos, dann helfe ich gerne (vllt Codeschnipsel?) --- Ich denke mal, dass es mit dem zusammenhängt.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.