Pfadangaben
-
hi,
ich will ein Programm für Linux und Windows mit Hilfe von Qt schreiben. Wie
passe ich die Pfadangaben an, dass sie auf beiden BSen stimmen? Ich dachte wenn man relative Pfade angiebt und die benötigten Dateien im selben Verzeichnis wie das Programm liegen, würde es funktionieren, aber unter Linux ist das CurrentDirectory immer das Home-Verzeichnis des aktuellen Benutzers. Wie könnte man das lösen?Tschau Gartenzwerg
-
Hi,
das Current Directory ist != Home Directory. Es ist eben das 'Current Directory' (..).
Das einzige Problem, welches du hast ist unter Linux: '/' und unter Windows: '\'.
Aber ich denke hier kann ein einfaches #define aushilfe schaffen:#ifdef LINUX const char *DirDelim = "/"; //oder eben std::string oder QString #else const char *DirDelim = "\\"; #endif
Sowas in der Art sollte dir weiterhelfen koennen. Stellst du dir die Pfade zusammen,
nutzt du 'DirDelim' (oder wie auch immer du es nennen magst).mfg
v R
-
@ virtuell Realisticer
Verfügt die Qt Bibliothek nicht von Haus aus über eine Konstante, die man verwenden kann?
-
Hi,
das kann ich dir leider nicht beantworten. Kann aber durchaus sein, da es QT
ja fuer mehrere Platformen gibt. Am besten schaust du dir dafuer mal die
Doku an.mfg
v R
-
Tja das ist ist ganz einfach kümmere dich nicht darum. Du kannst immer die "/" Syntax verwenden sowohl unter Windows wie auch unter Linux, probiers aus.
Joe
-
hi,
das wusste ich schon. Vielleicht habe ich mich falsch ausgedrückt. Wenn ich im KDE-Konqueror ein Programm z.B. aus dem Pfad ~/Programme starte, ist das CurrentDirectory, welches ich in dem Programm abfrage ~/. Starte ich es aus der Konsole ist das CurrentDirectory hingegen richtig gesetzt. Mein Problem ist nun, dass ich im Programmverzeichnis Dateien einlesen muss und ich nie wissen kann unter welchem Pfad das Programm installiert wird, also sind absolute Pfade, die das Problem umgehen würden inakzeptabel. Wie kann ich relative Pfadangaben erreichen, die auch funktionieren, wenn jemand das Programm aus eine Dateimanager startet?Tschau Gartenzwerg
-
i have some problems:
suppose I have a directory A and it has two subdirectories B and C and I work in B. Is there a way to go back from B to A in c++?
(under windows it works with "chdir", but under linux doesn't work)another problem: is there an alternative under linux for the windows' command _fullpath?
(see eventually http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt__fullpath.2c_._wfullpath.asp )
thakx.
-
Gartenzwerg:
Beschwer dich beim KDE-Team, dass der Konqueror den Pfad nicht richtig setztIch glaube es gibt aber eine Einstellungsmöglichkeit, wo dass dann richtig gemacht wird.
Vielleicht steht auch irgendwo in /proc/<PID>/ der Pfad wo das Programm liegt.
Eine andere Möglichkeit wäre noch mit einem wrapper-\1:
cd /pfad/zum/programm
./progDas müsste man dann eben als Benutzer anpassen.
-
hi,
danke DrGreenthumb, das mit dem Wrapper-Script ist eine gute Idee. Dieses Script kann ich ja vom Makefile erzeugen lassen, denn dort wird ja der Installationspfad angegeben.Vielen Dank!
Tschau Gartenzwerg