Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Firzen 28 Července 2010, 18:13:48
-
Zdravím,
už celkem dlouho mě trápí, že program, které vytvořím v qtcreatoru mají chybný pracovní adresář. Chyba se projevuje dost podivně. Pokud výsledný program spustím přímo v IDE, tak to všechno chodí tak, jak má. Avšak pokud na program poklikám v Dolphinu, tak je jeho pracovní adresář nastaven nesmyslně na /home/firzen/dokumenty. Na jiných počítačích to je zase jinak, tam je to (aspoň) v $HOME. Ale když otevřu Konsoli a spustím program (./program), tak funguje úplně správně! A v Gnome běží úplně všechno, jak má. I pod Windows.
Neví někdo, co je toto za dementní chybu?
-
To musí být něco v Dolphinovi... ten browser musí nějakým způsobem vnutit tomu programu pracovní složku. Ve windows ve WIN32 API jsem to dělal nějakou metodou, která vracela cestu k exe souboru toho spuštěného programu a já si jen odebral jméno souboru z té cesty a měl jsem onu složku pracovní odkud se spouštěl daný exe. Vím třeba, že když se daný soubor stáhnul a pustil třeba přes flashget download akcelerátor, tak mu to vnutilo jeho pracovní složku (což se asi děje s daným problémem). Chce to najít nějakou metodu, která bude vracet aktuální absolutní cestu daného programu. Nevím jestli todle přímo ošetřuje Qt framework. Zkuste hledat. Win32 má metodu na to přímo.
-
Tedy, Martine, velmi děkuju za parádní nakopnutí! Vůbec mě ten postup nenapadl, pořád jsem cosi zoufale hledal v nastavení projektu v qtcreatoru ale nic nefungovalo.
Díky tvé radě jsem našel fungující řešení:
#include <QDiR>
QDir::setCurrent(QApplication::applicationDirPath());
A je to!! ;)
-
To same mimochodem dela Mono a Monodevelop.
-
Tedy, Martine, velmi děkuju za parádní nakopnutí! Vůbec mě ten postup nenapadl, pořád jsem cosi zoufale hledal v nastavení projektu v qtcreatoru ale nic nefungovalo.
Díky tvé radě jsem našel fungující řešení:
QDir::setCurrent(QApplication::applicationDirPath());
A je to!! ;)
Díky za vyhledání. Našel bych ti to já, ale jsem trochu více zaneprázdněn. Vím, že jsem s tím taky strávil dost času ve windows, kdy jsem si dělal vlastní install wizard a tam todle bylo potřeba, protože lidi co si to stáhli z netu, tak to vždy nemuseli spustit dvojklikem na danou ikonku, ale přes úplně jiný program a ten mohl vnutit svoji pracovní složku což bylo nežádoucí. Ještě jednou díky, že jsi řešení uvedl i sem.
-
Hm dobré vedět :)
-
Vím, že jsem trochu offtopic, ale nechce se mi zakládat nové vlákno.
Program v Monu (MonoDevelop, .NET) spuštěný z grafického prostředí má snad vždy pracovní adresář $HOME, nicméě cestu k adresáři, kde je binárka, která je spuštěna je v Application.StartupPath (pozor bez koncového lomítka, tuším že je třeba použít using System;).