Verzeichnispfad richtig auslesen
-
Hallo alle zusammen,
ich habe das Problem bei Übergabe des richtigen Verzeichnispfades z.b.
void __fastcall TForm1::Button1Click(TObject *Sender) { const SELDIRHELP = 1000; AnsiString Dir = "D:\\Program Files\\MyApp"; if (SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt,SELDIRHELP)) ListBox1->Items->Add(Dir); }Bei dieser Funktion wird der Pfad nur mit einem Backslash nach dem Laufwerkbuchstaben in das ListBox eingefügt, was bei übergabe des Pfades an die Funktion CopyFiles() zu einer Fehlermeldung führt.
Wo mache ich den Fehler?
Alex
-
Hallo
Das Backslahs wird wohl von SelectDirectory angefügt.
Du must ja nichts weiter machen, als nach SelectDirectory den AnsiString Dir auf ein abschließendes backslash zu prüfen und wenn vorhanden, dieses entfernen.bis bald
akari
-
Erst mal großen Dank für schnelle Antwort!
Mein Problem ist genau anderes rum. Die Funkion
CopyFiles() erwartet die Pfade mit doppelten Backslash hinter dem Laufwerkbuchstaben z.b. CopyFiles(d:\\fotos, d:\\bilder);
Über den ListBox wird folgendes übergeben CopyFiles(d:\fotos, d:\bilder); was nicht funktioniert.
Wie kann die Pfade so formatieren, dass hinter jdedem Laufwerkbuchstaben zwei Backslash sich befinden?Mfg
Alex
-
Hallo
du verwechselst da etwas. Und zwar wie spezielle Zeichen wie das Backslash angezeigt werden, und wie sie tatsächlich im Code und Speicher representiert werden.
Den ein kmplettes Backslash wird intern verdoppelt, weil es als Sonderzeichen eine Escape-Sequenz einleitet.Nehmen wir also an, du willst überprüfen, ob AnsiString Dir von einem Backslash beendet wird oder nicht, sieht das also so aus :
if (Dir[Dir.Length()] != '\\') Dir += '\\';bis bald
akari