Laden...

Index ausserhalb des Arraybereichs / Archivierung von Ordnern

Erstellt von Versani vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.095 Views
Thema geschlossen
V
Versani Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
Index ausserhalb des Arraybereichs / Archivierung von Ordnern

Hallo Kollegen,

erstmal Hallo an alle.

Vorab: ich habe wenig bis garkeine Erfahrung / Routine in der Programmierung mit C#. Dennoch sitze ich gerade im Büro und versuche mir meine Arbeit durch Automatisierung etwas zu erleichtern 😉

Nun zu meinem Vorhaben:

Ich arbeite in einem größeren IT-Umfeld in welchem vor Kurzem die Umstellung von XP auf Win7 von statten ging. Nun wurde ich beauftragt, jegliche Software die auf XP gelaufen ist (Sourcen liegen in separaten Ordnern auf einem Share) zu zippen. Da dacht ich mir, schreibst dir ein kleines Progrämmchen mit C#, damit hast du, zumindest was die Syntax angeht, schon ein wenig Erfahrung.

Jetzt werden sich manche Fragen "warum willst du dafür in C# ein Programm schreiben, das geht doch auch mit einem simplen Batch-Script".
Nunja, das zippen geht tatsächlich mit einem simplen Skript, welches ich auch schon erstellt habe. Die gezippten Files sollen danach jedoch im Sinne einer Namenskonvention umbenannt werden. Meine Idee war eben, die Ordnernamen mit den Einträgen einer Access-Datenbank abzugleichen und hieraus dann die für die Namensgebung relevanten Daten rauszufiltern (z.B. Produkt-ID).

Jetzt bin ich gerade dabei, die Ordnernamen ein zu lesen und mir testeshalber in der Console ausgeben zu lassen. Funktioniert auch soweit, nur bekomme ich nach Abschluss dieses Programmes den im Topic genannten Fehler.

Jetzt habe ich mich natürlich schon informiert, was hier der Fehler ist und habe herrausgefunden, dass ich den Array erstmal mit einem Startwert instanzieren muss.

Nun meine Frage: Mache ich das nicht bereits mit int i = 0 ?

Ich bedanke mich schonmal für eure Hilfe - und bin mir sicher den ein oder anderen von euch mit meinem noobiehaftem Gestümper zu amüsieren 😉

Anbei das Snippet:


            string[] directories = Directory.GetDirectories(@"C:\MainDirectory\","*", SearchOption.TopDirectoryOnly);
            
            for (int i = 0; i < 300; i++)
            {
                Console.Write(directories[i]);
                Console.Write("\n");
            }

PS: Hab versucht mich an eure Forumsrichtlinien zu halten. Ich bin natürlich offen für jegliche Kritik was dies betrifft 😉

noob

5.942 Beiträge seit 2005
vor 9 Jahren

Hallo Versani

300 ist statisch. Nimmt doch dort directories.Length.
Denn wenn es mal weniger als 300 sind, kommt natürlich der genannte Fehler, weil der Array dann kleiner ist.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

V
Versani Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren

Hi Peter,

jetzt komm ich mir direkt blöd vor so einen Ellentext geschrieben zu haben 😉

Ich dachte schon irgendwie in diese Richtung, aber ich bin ums Verrecken nicht draufgekommen. Allerdings erklärt mir das jetzt auch die Fehlermeldung, dass ich mich bereits ausserhalb des Arraybereichs befände, wenn bei 9 Schluss ist und die for-loop aber bis nach 300 weitergehen will.

Vielen Dank für deinen Tipp.

Viele Grüße,
Daniel

noob

N
135 Beiträge seit 2006
vor 9 Jahren

Du könntest natürlich auch foreach nutzen. Dann musst Du nirgends angeben wie viele Durchläufe gemacht werden müssen 😉

2.207 Beiträge seit 2011
vor 9 Jahren

Damit ist alles gesagt und da dies Grundlagen sind, ist hier zu.

Gruss

Coffeebean

Thema geschlossen