[gelöst] relativer Pfad, absoluter Pfad

Alles rund um die Programmierung mit Qt
Antworten
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

[gelöst] relativer Pfad, absoluter Pfad

Beitrag von softwaremaker »

Meine Programm-Verzeichnisstruktur soll sein:
..\Bin (hier ist die Applikation + DLLs drinnen)
..\Data (Dateien mit Einstellungen usw.)
..\Resource (Sprachdateien, Icons, ...)

Von der Applikation im Unterordner "Bin" möchte ich auf Dateien in z.B. Unterordner "Data" zugreifen.
Derzeit mache ich das so:

Code: Alles auswählen

    QDir    path(QCoreApplication::applicationDirPath());
    path.cdUp();
    QFile file( path.absolutePath() + QDir::separator() + "Data" + QDir::separator() +"settings.xml" );
ist aber nicht optimal wegen cdUp, ich will den Pfad relativ angeben, also so:
QCoreApplication::applicationDirPath() + "../Data/" + "settings.xml"
wie soll ich dass machen?
Zuletzt geändert von softwaremaker am 3. April 2009 01:44, insgesamt 1-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Wie du schon selbst geschrieben hast:

Code: Alles auswählen

QDir path(QCoreApplication::applicationDirPath() + "../Data");
Aber wo genau ist jetzt der Unterschied zwischen

Code: Alles auswählen

    QDir path(QCoreApplication::applicationDirPath());
    path.cdUp(); 
und

Code: Alles auswählen

QCoreApplication::applicationDirPath() + "../Data/" + "settings.xml" 
?
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

relativer Pfad

Beitrag von softwaremaker »

mittels relativen Pfad:
QCoreApplication::applicationDirPath() + "../Data/" + "settings.xml"
ist es möglich, diesen auch in einer Eingabemaske für den Benutzer änderbar zu machen, bzw. den rel. Pfad in einer Datei zu speichern.

Ich möchte z.B. auch folgendes in einer Datei speichern können:
[Einstellungen]
Pfad="../Data/"
IstRelativ=1

oder
Pfad="d:/netzlaufwerk/Data/"
IstRelativ=0
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Ja dann tus doch :)
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

ja aber wie

Beitrag von softwaremaker »

ja aber wie?

was muss ich bei
QFile file(...) angeben?
denn
QFile file(QCoreApplication::applicationDirPath() + "../Data/" + "settings.xml");
klappt ja nicht.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

doch... allerdings fehlt laut Doku wohl ein Separator...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

habs jetzt selbst gefunden

Beitrag von softwaremaker »

die Lösung is QDir::cleanPath

QDir::cleanPath( QCoreApplication::applicationDirPath() + QDir::separator()
+ "../Data" + QDir::separator() +"settings.xml");
Wenn die Applikation in myprog/Bin ist dann kommt man so auf myprog/Data/settings.xml
cleanPath entfernt ".." und löst entsprechend auf (geht also ein Verzeichnis zurück).
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QDir::separator() ist überflüssig - ein '/' reicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten