QT Programm nimmt falsches Verzeichnis

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

QT Programm nimmt falsches Verzeichnis

Beitrag von debianx » 01.08.2018 16:36:58

Hallo,

in einem QT Programm nutze ich #include <dirent.h> zum Auflisten von Dateien/Verzeichnissen. Per opendir("."); erhält man dann normalerweise den Zugriff auf das Verzeichnis in dem das Programm selber liegt.
wenn ich ein QT Programm über QT kompiliere/ausführe also "release" dann funktioniert alles prima.
Unabhängig von QT unter Mate lässt sich das Programm nicht per Doppelklick starten ("xyz konnte nicht angezeigt werden. für dem Dateityp ist keine Anwendung installiert etc") obwohl unter Eigenschaften "Datei als Programm ausführen" ein häckchen dran ist. Wenn ich dann das Programm über das Mate-Terminal starte, dann stimmt vom Programm die Ermittlung des Verzeichnis nicht mehr -> Es wird dann das User-Verzeichnis aufgelistet und nicht mehr das Verzeichnis des Programms. Aus irgendwelchen Gründen denkt dann das Programm es liegt im User-Verzeichnis was natürlich falsch ist.

Wie kann ich das Programm starten, dass das Verzeichnis stimmt?

Grüße

DeletedUserReAsG

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von DeletedUserReAsG » 01.08.2018 17:52:35

debianx hat geschrieben: ↑ zum Beitrag ↑
01.08.2018 16:36:58
Per opendir("."); erhält man dann normalerweise den Zugriff auf das Verzeichnis in dem das Programm selber liegt.
Soweit mir bekannt, bekommt man dann das cwd – also das Verzeichnis, in dem man sich befindet, wenn man das Programm aufruft.

owl102

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von owl102 » 01.08.2018 20:06:41

niemand hat geschrieben: ↑ zum Beitrag ↑
01.08.2018 17:52:35
Soweit mir bekannt, bekommt man dann das cwd – also das Verzeichnis, in dem man sich befindet, wenn man das Programm aufruft.
Genau, und man darf/kann nicht im Programmcode davon ausgehen, daß dies das Verzeichnis ist, in dem auch die Anwendung liegt -- im Gegenteil.

Den Pfad der Anwendung bekommt man in Qt-Anwendungen mit QCoreApplication::applicationDirPath().

debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von debianx » 01.08.2018 20:54:01

Danke! ok dann ist es logisch.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von eggy » 02.08.2018 00:20:07

Leicht OT: http://doc.qt.io/qt-5/qdir.html kennst Du schon?

debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von debianx » 02.08.2018 15:57:28

eggy hat geschrieben: ↑ zum Beitrag ↑
02.08.2018 00:20:07
Leicht OT: http://doc.qt.io/qt-5/qdir.html kennst Du schon?
Danke, QT hat echt alles zu bieten.

ps: nicht einmal das neue c++17 std::filesystem kann den App-Pfad rausgeben (wohl auch cwd). Habs wie vorgeschlagen jetzt mit QCoreApplication::applicationDirPath() gemacht :THX:

Antworten