PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfadprobleme



Kirsche
20-07-2003, 17:59
Hallo Leute,
ich habe unter KDevelop ein Programm geschrieben, das auch von dort aus ohne Probleme gestartet werden kann. Nun möchte ich es auch auch KDevelop als Umgebung starten. Das Problem dabei ist, dass ich eine ini-Datei einlese, in der man den Pfad des Programmes einstellen kann. Die Datei wird nach dem Programmstart eingelesen, um den Pfad des Programmes und der Unterorder zu ermitteln. Die ini-Datei befindet sich dabei im selben Ordner wie das Programm. Unter KDevelop klappt es auch wunderbar. Rufe ich das Programm ohne KDevelop von einer Shell aus, geht es auch. Klicke ich auf das Symbol, wird die ini-Datei nicht gefunden. Als Pfad habe ich nur den Dateinamen angegeben, da ich davon ausgehe, dass nach der ini-Datei im gleichen Ordner gesucht wird, in dem das Programm steht.
Also habe ich mir einen anderen Weg überlegt: Ich erstelle einen Ordner mit dem Namen .repredictor und lege darin meine Datei "repredictor.ini" ab.
Dann stelle ich den Pfad zum Einlesen der Datei auf /home/kirstin/.repredictor
Da gibt es auch keine Probleme. Aber: Ich muss mein home-Verzeichnis angeben. Falls jemand nur die Datei repredictor.out zu Verfügung hat, aber nicht den Quellcode, kann er den Pfad nicht umstellen. Ich habe versucht, ~ statt home/kirstin zu schreiben, aber das klappt auch nicht.
Ansonsten bleibt mir nur noch die Möglichkeit, den Pfad festeinzustellen, aber das ist mir zu unflexibel.
Ich hoffe, mir kann jemand helfen, einen der ersten beiden Wege richtig hinzubekommen.
Vielen Dank,
Kirstin

anda_skoa
20-07-2003, 19:49
Der aktuelle Pfad ist immer das Arbeitsverzeichnis des Prozesses (working directory)

Ich nehme an, dass du das "aus der shell starten" im Verzeichnis des Programms gemacht hast, darum hat es da auch funktioniert.

Es gibt wahrscheinlich eine Möglichkeit, den Pfad, der beim configure als Installationsprefix angegeben wird, irgendwie beim Kompilieren mitgeteilt zu bekommen.

INI Dateien werden aber eh üblicherweise auch geschrieben, können also nur in Userspezifischen Verzeichnissen sein.
Der Ansatz mit einem Programmspezifischen dot-Verzeichnis (.programmname) ist da ganz üblich.

Das Homeverzeichnis des Users, der das Programm ausführt, bekommst du in Qt ganz einfach über die Klasse QDir und die statischen Methoden ::homeDir() bzw ::homeDirPath()

Eine globale Config könnte man bei Bedarf in /etc ablegen.

Ciao,
_

Kirsche
20-07-2003, 21:51
Hallo anda_skoa,
vielen Dank für deine Hilfe. Ich probiere es gleich mal aus.
Schöne Grüße,
Kirstin

Kirsche
22-07-2003, 10:58
Hallo anda_skoa,
es funktioniert jetzt. Noch mal vielen Dank.
Schöne Grüße,
Kirstin