Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 08.11.08 20:36 
Hallo zusammen,


ich möchte eine Combobox mit den Dateien eines bestimmten Ordners füllen, dass funktioniert auch soweit. Nur möchte ich das der Dateiname ohne Verzeichnis usw. angezeigt wird. Dazu habe ich folgendes zusammengebaut:

ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (Object FI in System.IO.Directory.GetFiles(@"C:\XMLTestFiles""*xml*"))
{
 cmbFiles.Items.Add(Convert.ToString(FI));
}


So erhalte ich einen String den ich entsprechend bearbeiten kann. Was mich dabei jedoch etwas stört, ist das ich da ein Objekt in String konvertiere, ist das so überhaupt OK, oder ist es Zufall das es so funktioniert? Gibt es eventuell einen besseren Lösungsweg?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 08.11.08 21:05 
Prinzipiell hat jedes Objekt eine ToString-Methode (also z.B. FI.ToString()) und kann somit auch in einen String konvertiert werden. Wie sinnvoll diese String-Darstellung dann ist, ist unterschiedlich.

Da aber Directory.GetFiles() sowieso ein String[] zurückliefert, ist es Unsinn FI als Object zu deklarieren und dann in einen String zu konvertieren. Es ist ein String, also deklarier es auch direkt als solchen ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 08.11.08 21:09 
Hallo,

Du solltest es so machen:
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (string s in Directory.GetFiles(@"C:\XMLTestFiles""*.xml*"true/false))
{
    cmbFiles.Items.Add(Path.GetFileName(s));
}

Hinweise: Directory.GetFiles liefert ein string-Array. Alles ist vom Typ object, also auch string; deshalb ist es tatsächlich Zufall. Wenn Du direkt string verwendest (was wegen des Rückgabewerts zulässig ist), brauchst Du nichts zu konvertieren. Convert.ToString() ist unüblich; normalerweise verwendet man (Variablenname).ToString().

Dein Variablenname lässt mich vermuten, dass Du mit DirectoryInfo und/oder FileInfo arbeiten wolltest. Das ist meistens umständlicher und nur dann sinnvoll bzw. notwendig, wenn Du weitere Informationen brauchst, die durch File/Path/Directory-Methoden nicht zur Verfügung gestellt werden (z.B. die Dateigröße).

Gruß Jürgen

PS. Christian hat (während ich meine Antwort formulierte) das Wesentliche schon gesagt. Da ich noch etwas mehr Angaben mache, speichere ich meinen Text trotzdem.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 08.11.08 21:47 
Vielen Dank euch beiden! Mir war schon irgendwie klar dass es quatsch ist mit dem Objekt, ich habe es aber einfach nicht bemerkt.:roll: Na ja, ich sollte mal Feierabend machen, ich habe mittlerweile viereckige Augen :eyes:


Vielen Dank noch mal!

Gruß
Christoph