Pfad von Dateinamen trennen



  • Hi! Ich möchte unter Visual C++ aus einer CString Variable (z.B. CString pathname), welche den Pfad (über GetPathName() ) zu einer Datei beinhaltet (z.B C:\Programme\Irgendwas\datei.txt), den Dateinamen entfernen, so dass quasi nur der Pfad (C:\Programme\Irgendwas) übrigbleibt.Den Dateinamen (datei.txt) kann ich mir ja über die GetFileName()-Methode in eine andere CString-Variable (z.B CString filename) schreiben. Eigentlich müßte man dann ja nur den Inhalt der einen Variable von der anderen abziehen, oder?

    Leider stehe ich genau an dieser Stelle auf dem Schlauch. Kann mir da jemand mit einem Stückchen Code weiterhelfen?
    (Hab es schon mit der GetFolderName()-Methode versucht, leider bekomme ich da nur Laufzeit-Fehler. Wäre ja auch zu einfach gewesen. Deswegen dieser Umweg.)
    Vielen Dank schon mal im voraus.



  • Folgende Möglichkeit:

    int position;
       position = pathname.ReverseFind(filename);
       pathname = pathname.Left(--position);
    

    Sollte eigentlich klappen 😉



  • Ich hab's jetzt grad nicht mehr so genau im Kopf, aber es müsste folgendermassen funzen: den von GetFileName zurückgelieferten String im CString-Objekt suchen (mittels Find-Methode). Find liefert den Index zurück, wo der Substring (der Dateiname) gefunden wurde. Diesen Index an die Delete Methode von CString übergeben...



  • Die Funktion _splitpath bricht dir einen String in seine Komponenten.



  • reversefind nach nem Backslash
    oder noch besser trim right backslash 😃 😃



  • path.GetFileName() -> CFileDialog bzw CFile

    oder wie bereits erwähnt über ReverseFind falls es sich um einen CString handelt


Anmelden zum Antworten