QT Programm nimmt falsches Verzeichnis

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
debianx
Beiträge: 35
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

Benutzeravatar
niemand
Beiträge: 11807
Registriert: 18.07.2004 16:43:29

Re: QT Programm nimmt falsches Verzeichnis

Beitrag von niemand » 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.
Hardware: dunkelgrauer Laptop mit buntem Display (zum Aufklappen!) und eingebauter Tastatur; beiger Klotz mit allerhand Kabeln und auch mit Farbdisplay und Tastatur (je zum auf’n Tisch Stellen)
Am 7. Tag aber sprach der HERR: „QWNoIFNjaGVpw58sIGtlaW5lbiBCb2NrIG1laHIgYXVmIGRlbiBNaXN0ISBJY2ggbGFzcyBkYXMgamV0enQgZWluZmFjaCBzbyDigKYK“

owl102
Beiträge: 2385
Registriert: 16.10.2010 13:05:57
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Timbuktu

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().
Fedora 29 Workstation -- Debian 9 (Qnap TS-109/119) -- OmniOS (HP N54L)

debianx
Beiträge: 35
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: 1508
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: 35
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