Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Liste erstellen, die Ordnernamen ohne deren Pfade anzeigt
Epanias
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

Liste erstellen, die Ordnernamen ohne deren Pfade anzeigt

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Epanias am .
Attachments
private Nachricht | Beiträge des Benutzers
CSharperUser
myCSharp.de - Member



Dabei seit:
Beiträge: 81

beantworten | zitieren | melden

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.

Moderationshinweis von herbivore (01.07.2013 - 07:33:11):

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.

private Nachricht | Beiträge des Benutzers
Epanias
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

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 :D
Allerdings komme ich nicht hinter den Sinn des +1 am Ende der Substringbefehlszeile. Könntest Du mir bitte den Nutzen dazu erklären?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Epanias am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers