Laden...

Liste erstellen, die Ordnernamen ohne deren Pfade anzeigt

Erstellt von Epanias vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.220 Views
Thema geschlossen
E
Epanias Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren
Liste erstellen, die Ordnernamen ohne deren Pfade anzeigt

Hallo Community,

Gleich mal im Voraus: Ich bin noch ein ziemlicher Anfänger was C# angeht, habe bis jetzt nur ein bisschen C
unter DOS programmiert und mir jetzt mal das Buch "Einstieg in Visual C# 2012" von Thomas Theis zugelegt und größtenteils durch.
Ich möchte jetzt auch mein erstes größeres Projekt in Angriff nehmen und ein spezielles Editionstool erstellen.
Nach dem Starten des Tools soll der User aus einer Liste von Ordnernamen (die einem speziellen vorher spezifizierten Ordnerpfad entstammen), deren Pfade nicht in dieser Liste angezeigt werden sollen, einen Ordnernamen auswählen, mit dessen Inhalt danach gearbeitet wird.
Bis jetzt habe ich es geschafft eine Liste zu erstellen, in der die Ordnernamen der Ordner innerhalb des vorher spezifizierten Ordnerpfades angezeigt werden, jedoch mit ihrem vorausgehenden Pfad:
<Bild siehe Anhang>
mit folgendem Code:


            string verzeichnis;
            int i;
            string[] dateiliste;
            Directory.SetCurrentDirectory(CharDirectory);
            verzeichnis = Directory.GetCurrentDirectory();
            dateiliste = Directory.GetDirectories(verzeichnis);
            lstCharacterList.Items.Clear();
            for (i = 0; i < verzeichnis.Length; i++)
            {
                lstCharacterList.Items.Add(dateiliste[i]);
            }

Ich habe jetzt gefühlte 100 unterschiedliche Arten versucht, die einzelnen Ordnernamen ohne ihre Pfade anzeigen zu lassen
und jeder Versuch hat mit einer neuen Katastrophe geendet. Ich bin langsam echt am Verzweifeln.
Internet und Sufu haben mir auch nichts nützliches zu meinem Problem beigetragen.
Und selbst wenn doch, haben auch diese Lösungen zu neuen Problemen geführt, mit denen ich mich noch weniger auskenne.

Hat jemand von Euch eine Idee, wie ich dieses Problem lösen könnte? Ich wäre für Abhilfe echt dankbar.

C
80 Beiträge seit 2010
vor 10 Jahren

Hallo Epanias,

Erweitere einfach deinen Code um folgende Zeilen:


string verzeichnis;
            int i;
            string[] dateiliste;
            Directory.SetCurrentDirectory(CharDirectory);
            verzeichnis = Directory.GetCurrentDirectory();
            dateiliste = Directory.GetDirectories(verzeichnis);
            lstCharacterList.Items.Clear();
            for (i = 0; i < verzeichnis.Length; i++)
            {
                string vollerPfad = dateiliste[i];
                string ordnername = vollerPfad.Substring(vollerPfad.LastIndexOf("/") + 1);
                lstCharacterList.Items.Add(ordnername);
            }

Eventuell aus dem / einen Backslash machen.

Hinweis von herbivore vor 10 Jahren

Pfade sollte man nie mit String-Operationen bearbeiten, sondern nur mit dem Methoden der Klasse Path. Der folgende Hinweis/Einwand von Epanias liefert auch gleich einen der vielen Gründe dafür.

E
Epanias Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Aah danke, damit funktioniert es 😃
Allerdings hast du bei der Zeile:


 string ordnername = vollerPfad.Substring(vollerPfad.LastIndexOf("/") + 1);

das / mit einem \ verwechselt 😉

Ich hatte es vorher mit einer ähnlichen Methode des Substrings und auch des lastindexes versucht, allerdings eine aus dem Buch mit Integern, die dann in einer Fehlermeldung gescheitert ist.
Gut zu wissen wie man beides zusammen kombiniert richtig einsetzt 😄
Allerdings komme ich nicht hinter den Sinn des +1 am Ende der Substringbefehlszeile. Könntest Du mir bitte den Nutzen dazu erklären?

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Epanias,

verwende keine String-Operationen, sondern immer die Methoden der Path-Klasse.

Wenn du nur den Ordnernamen anzeigen willst, aber später den vollständigen Pfad brauchst, dann kannst du dir eine eigene Klasse schreiben, die beides enthält, und dann mit ListBox.DisplayMember und ListBox.ValueMember bestimmen, was angezeigt und was geliefert werden soll.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

Thema geschlossen