Schönen guten morgen, 😁
ich versuche folgendes Problem schon zwei Tag zu lösen. 🙁
Ich erhalte immer den Fehler: ⚠
Das angegebene Pfadformat wird nicht unterstützt. ?(
Laut MSDN-Eintrag sollte dies alles so passen, wie es in meinem Quellcode ist.
this.Folderpath = dlgFolderOpen.SelectedPath.ToString();
try { this.fileEntries = Directory.GetFiles(this.Folderpath, "*.bmp", SearchOption.AllDirectories); }
catch (Exception test) { MessageBox.Show("Exception: " + test.Message); }
Ich denke es liegt daran das ich den Pfad mit einfachen "" zurückbekomme der aber "\" enthalten sollte. ?(
Vielen Dank für eure Hilfe und Gruß
Peter
this.Folderpath = dlgFolderOpen.SelectedPath.ToString(); try { this.fileEntries = Directory.GetFiles(this.Folderpath, "*.bmp", SearchOption.AllDirectories); } catch (Exception test) { MessageBox.Show("Exception: " + test.Message); }
Ich denke es liegt daran das ich den Pfad mit einfachen "" zurückbekomme der aber "\" enthalten sollte. ?(
Was ist dlgFolderOpen?
Was ist dlgFolderOpen.SelectedPath? Es ist unwahrscheinlich, dass Du da ein .ToString() benötigst.
In welcher Zeile tritt der Fehler auf?
Was steht in Folderpath?
Bist du dir sicher das dlgFolderOpen.SelectedPath auch eine korrekte Pfadangabe ist?
Wenn dein dlgFolderOpen ein FolderBrowserDialog ist solltest du schaun ob der vorher auch aufgerufen wurde und auch auf Ok geklickt wurde.
your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself
Hallo,
zunächst einmal: **SelectedPath **ist schon ein String, das "ToString" ist also völlig überflüssig. Ebenso kann this
hier (wie fast immer) weggelassen werden. Der doppelte **Backslash **wird nur innerhalb von C#-Strings benötigt, aber in allen externen Ausgaben (TextBox, MessageBox usw.) nicht. Dein Hinweis dazu sagt also überhaupt nichts aus.
Der einzige Verdacht, den ich habe, ist, dass der BrowserDialog auf ein "ungültiges" Verzeichnis hinweist, z.B. weil vorher nichts zugewiesen und mit Cancel abgebrochen wurde, der Wert aber trotzdem verwendet wird. Lies Dir einmal in :rtfm: FolderBrowserDialog.SelectedPath die Hinweise durch.
Genauere Informationen bekommst Du durch Exception.ToString statt Message; das ist in der Regel erheblich ausführlicher.
Gruß Jürgen
OK, die anderen waren schneller, aber ich habe eine vollständigere Antwort gegeben. 😁
Oh Sorry;
dlgFolderOpen ist von FolderBrowserDialog();
FolderBrowserDialog dlgFolderOpen = new FolderBrowserDialog();
GRuß
Peter
Hallo,
offensichtlich treibst zu zwischen dem Auslesen des Pfades aus dem BrowseDialog und dem Suchen nach den Dateien irgendwelchen Unfug mit dem string, denn folgender Code sollte funktionieren:
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
string muh = fbd.SelectedPath;
string[] infos = Directory.GetFiles(muh,"*.txt",SearchOption.AllDirectories);
Also guck mal ob du dazwischen nicht evtl auf irgend eine Weise den String manipulierst...
Gruß David
Hi DavidT,
ich lasse den dlgFolderOpen.ShowDialog() gleich in einer if abfrage abfragen.
hier mal ein größerer Teil meines Quellcodes, da ich keinen Fehler erkennen kann.
Ich habe das alles eigentlich so wie du.
private void Folien_Load(object sender, EventArgs e)
{
myGraphics = this.pictureBox1.CreateGraphics();
//OpenFileDialog dlgFileOpen = new OpenFileDialog();
//dlgFileOpen.Filter = "Bitmapdateien (*.bmp)|*.bmp";
FolderBrowserDialog dlgFolderOpen = new FolderBrowserDialog();
if (dlgFolderOpen.ShowDialog() == DialogResult.OK)
{
this.Folderpath = dlgFolderOpen.SelectedPath;
try { this.fileEntries = Directory.GetFiles(this.Folderpath, "*.bmp", SearchOption.AllDirectories); }
catch (Exception test) { MessageBox.Show("Exception: " + test.ToString()); }
for (int i = 0; i < this.fileEntries.Length; i++)
{
this.ganzpfad = this.Folderpath+this.fileEntries[i];
this.imageList1.Images.Add(Bitmap.FromFile(this.ganzpfad));
}
Vielen Dank fürs schauen
Gruß
Peter
Setz mal in die Zeile im try-Block nen Breakpoint, brwose in irgend ein teifes Verzeichnis un kopiere mal den Pfad-String hier rein.
Gruß David
Hi DavidT
hier nun mal der Pfadstring:
Folderpath "C:\\Programme\\Ahead\\Nero\\WaveEditor" string
so wird er bei Debuggen angezeigt.
Gruß
Peter
Hallo PeterB,
leider bist Du die Antwort auf die Frage nach der genauen Zeile des Fehlers schuldig geblieben.
Anhand des nun endlich geposteten FolderPath's und des vollständigen relevanten Quelltexts würde ich vermuten, dass der Fehler beim Laden der Bitmap auftritt und nicht im ursprünglich angegebenen try/catch.
Benutze Path.Combine, um den Namen der zu ladenden Datei zu ermitteln.
Ich habe es nun entlich hinbekommen.
Ich spreche die Dateien nun direkt an, da er sich den Pfad merkt und nicht mehr die Dateien über Pfad.
Vielen Dank
PeterB
Zur Erklärung: Der Fehler tritt höchstwahrscheinlich hier auf (das überflüssige this habe ich gestrichen):
ganzpfad = Folderpath + fileEntries[i];
imageList1.Images.Add(Bitmap.FromFile(ganzpfad));
Folderpath enthält, wie der Debugger gezeigt hat, einen ordnungsgemäßen Pfadnamen. GetFiles liefert ein Array, für das :rtfm: sagt:
Dateinamen enthalten den vollständigen Pfad.
Na, und was kommt durch die Addition wohl heraus?
"C:\\Programme\\Ahead\\Nero\\WaveEditorC:\\Programme\\Ahead\\Nero\\WaveEditor\\myBitmap.bmp"
Konsequenz: Genaue Fehlermeldungen mit Angabe der Zeile helfen ungemein. Dann hilft vielleicht auch die eigene Fehlersuche schneller als mit zwei Tagen Arbeit, z.B. mit Nachlesen in :rtfm:
Übrigens solltest Du Dir mal NET: Richtlinien für Namen durchlesen und beachten. Das Hin- und Herspringen zwischen Groß- und Kleinschreibung, deutschen, englischen und denglischen Begriffen ist schrecklich. Namen wie imageList1 gehören sowieso verboten; da verlierst nach spätestens 14 Tagen auch Du den Überblick.
Jürgen