none
Wie? openFileDialog1->InitialDirectory = relativer Pfad Angabe RRS feed

  • Frage

  • OpenFileDialog ^ openFileDialog1 = gcnew OpenFileDialog();
    
    
    	openFileDialog1->InitialDirectory = "../MyDir"; // Beispiel

    Wie kann ich in einer VS 2013 C++/CLI Forms Anwendung bei InitialDirectory einen relativen Pfad angeben ?

    Leider funktioniert z.B. "../MyDir" nicht für ein Unterverzeichnis vom Verzeichnis des ausführenden Programm.

    Danke im voraus

    Thomas

    Samstag, 11. Juni 2016 01:24

Alle Antworten

  • Hallo Thomas,

    das einfachste dürfte sein aus deinem relativen Pfad einen absoluten zu machen. Mittels Path.Combine kannst du dafür den Absoluten mit dem relativen Pfadteil mit einander verknüpfen. Über diese Methode wird beispielsweise verhindert das am Ende mehrere \ direkt hinter einander stehen. Um dann noch die ..-Angaben aufzulösen kannst du das Ergebnis an Path.GetFullPath übergeben.

    Die Path-Klasse findest du im System.IO-Namespace. An den Pfad der Anwendung kommst du über

    System::Reflection::Assembly::GetEntryAssembly()->Location
    heran. Passe aber auf, weil du standardmäßig keine Schreibrechte im Installationsordner hast. Bei portablen Anwendungen sollte das natürlich kein Problem sein.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Samstag, 11. Juni 2016 15:37
  • Hallo Tom,

    vielen Dank für deine Antwort.

    Ich poste hier mal eine mögliche Lösung für spätere "Suchenden".

    String ^ p1,^p2,^combination;
    	p1 = System::IO::Path::GetDirectoryName(System::Reflection::Assembly::GetEntryAssembly()->Location);  //Path to EXE
    	p2 = "Analysis"; //SUB DIRECTORY
    	combination = Path::Combine(p1, p2);
    	openFileDialog1->InitialDirectory = combination;

    Gruß

    Thomas

    Mittwoch, 15. Juni 2016 00:24