Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
uiii
Založen: 12. 08. 2007 Příspěvky: 251
|
Zaslal: 18. leden 2009, 19:45:29 Předmět: Cesta k aplikaci |
|
|
Cau, mam dalsi problem Da se nejak v c++ zjistit adresar aplikace? Jde mi o to, ze si ona vytvari naky soubory, ale tak aby byli hned u spousteciho souboru. Jenze ten spousteci soubor muze byt umisten kdekoli, takze neznam absolutni cestu a pokud tu aplikaci nepustim primo z jejiho adresare, tak mi to ty soubory vytvori v tom adresari, odkud jsem ji poustel a to nechci. Nevita jak na to? Dik Uiii
Jen poznamenam ze to delam v linuxu. _________________ Twitter |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 18. leden 2009, 19:51:27 Předmět: |
|
|
neni nahodou nultym parametrem pro main full-path k aplikaci? |
|
Návrat nahoru |
|
 |
uiii
Založen: 12. 08. 2007 Příspěvky: 251
|
Zaslal: 18. leden 2009, 20:12:53 Předmět: |
|
|
no jo mas pravdu dik _________________ Twitter |
|
Návrat nahoru |
|
 |
ladik-BigBoss

Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 19. leden 2009, 21:34:37 Předmět: |
|
|
nemusi byt. nultym parametrem je prikaz. takze pokud tu aplikaci mas nainstalovanou v PATH, treba /usr/bin tak ji muzes spustit jako 'app' a pouze to dostanes do argv[0].
nekde jsem videl clanek kde to resili, myslim ze to jde nejak pres PID v /proc |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 19. leden 2009, 21:38:39 Předmět: |
|
|
Proto v linuxu většinou nejsou data v adresáři s binárkou. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 19. leden 2009, 22:22:19 Předmět: |
|
|
char path[512] = {0};
Na Windows pomocí: GetModuleFileName(0, path, 511)
Na Linuxu pomocí: realpath("/proc/self/exe", path) _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 19. leden 2009, 22:33:59 Předmět: |
|
|
frca napsal: |
Proto v linuxu většinou nejsou data v adresáři s binárkou. |
Proc by nemohly, dyt ono to ani nevadi, ze v argv[0] nemusi byt cesta absolutni. Proste je takova, ze vede k binarce. Ve svejch hrach (jsou k nim zdrojaky) si vzdycky nastavim cestu na tu, kam miri argv[0], a muzu pak bez problemu najit data hry (pac od te chvile jsou relativne vzdy stejne umistene, napr. "hudba/menu.mp3"). Cestu si zalohuju, takze ji pak pri ukonceni hry vratim, kdyby neco. Diky tomu jdou me hry pustit jednoduse kliknutim na ikonu v Nautilu/Konqueroru, aniz bych musel otevirat konzoli a prejit do adresare hry (narozdil od Pruzkumnika ve Windows totiz spustenim z GUI dostane v Linuxu hra obvykle cestu k home). _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 20. leden 2009, 07:36:37 Předmět: |
|
|
frca napsal: |
Proto v linuxu většinou nejsou data v adresáři s binárkou. |
nejenom v linuxu - ani na windows - v linuxu patri data aplikace do /home/$USER/... ve win do D&S\%USER%\ApplicationData
resp.!!! - v linuxu aktualni home udava $ pokud se nemylim a ve windows se nikdy nesmi pouzit primo nazev D&S nebo jmeno aktualne prihlaseneho uzivatele - ale ziskat si cestu pres API funkci nebo z env promenne - protoze D&S se muze jmenovat jinak nebo byt na jinem disku nez cekame a jmeno uzivatele nemusi nutne souhlasit se jmenem slozky - treba v domene mam Reznicek.ESPACE |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 20. leden 2009, 10:33:48 Předmět: |
|
|
Rezna myslim mluvi o uzivatelskych datech, jako nastaveni hry a ulozene pozice. Tyto data skutecne nepatri do adresare hry, protoze pokud hru nainstaluje jiny uzivatel, tak ostatni by ji bez prav na zapis do adresare hry nemohli hrat.
Ve Windows se to driv vytahavalo z registru (HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData, precteni z registru viz zdrojaky mych her), pocinaje Win2000 je na to i funkce ve WinAPI, ve Viste uz ten klic v registrech ani nema pro system vyznam, ale z duvodu kompatibility do nej Vista kopiruje aktualni nastaveni cest. Takze pokud ma hra bezet i na starsich OS, tak je to reseni v pohode. V Linuxu je to jeste jednodusi, proste jen getenv("HOME") .
Obvykle se to dela tak, ze kdyz jde jen o jeden soubor, tak ho date do rootu te slozky, pokud je jich vic, tak do podslozky, v Linuxu samozrejme skryte (tecka na zacatku). BTW nektere hry to nedelaji spravne, napr. jedna verze GTA slozku s uzivatelskymi daty dava do rootu vasich dokumentu . _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 20. leden 2009, 11:11:09 Předmět: |
|
|
add windows - je tam %APPDATA% kterou stejne tak staci pouze secist pres API |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 20. leden 2009, 13:35:39 Předmět: |
|
|
Ano je, uz si vzpominam. Proste zpusobu je vice, mimochodem tento uvedeny zapis je koukam dokonce pouzit v jedne me male hre (v zastupci pro editaci konfiguracniho souboru, ktery tak funguje vsude) . _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
|