knuto Skrevet 5. januar 2006 Del Skrevet 5. januar 2006 Hei! Eg har oppdaga eit lite problem, men det kan godt vere at det er ufatteleg lett å løyse. Eg utvikler eit program. Dette programmet har ei språkfil (norwegian.lng) som det laster inn ved oppstart. Denne språkfila ligg i same mappe som programmet. Problemet mitt er å få lest denne fila med bruk av dynamiske stiar. Viss eg berre brukar "./norwegian.lng" som fil-argumentet til ifstream vil ikkje programmet finne fila viss programmet er starta frå ei anna mappe slik (win-console): D:/Diverse/> P:/eksempelprogram/Start.exe -l norwegian Då vil faktisk fstream leite i D:/Diverse etter språkfila ... Lenke til kommentar
charlie di meola Skrevet 5. januar 2006 Del Skrevet 5. januar 2006 finnes sikkert en mer elegant måte men å bruke argv[0] (strrchr for å finne siste \) er ikke så vanskelig. Lenke til kommentar
dayslepr Skrevet 5. januar 2006 Del Skrevet 5. januar 2006 tenkte på det samme, men vil det fungere om programmet ligger i path'en? Lenke til kommentar
kjetil7 Skrevet 5. januar 2006 Del Skrevet 5. januar 2006 tenkte på det samme, men vil det fungere om programmet ligger i path'en? 5389780[/snapback] Det fungerer ikke i Windows, men gjør det i Cygwin. Så jeg går ut i fra at det også fungerer i Linux. I Windows kan du bruke GetModuleFileName() eller lignende. Lenke til kommentar
TorsteinP Skrevet 16. januar 2006 Del Skrevet 16. januar 2006 Første commandline parameter er alltid selve programmet med full path uansett hva som er gjeldende katalog. D:/Diverse/> P:/eksempelprogram/Start.exe -l norwegian Parameter 1 er P:/eksempelprogram/Start.exe Parameter 2 er -l Parameter 3 er norwegian Bare å erstatte Start.exe med norwegian.lng Lenke til kommentar
kjetil7 Skrevet 16. januar 2006 Del Skrevet 16. januar 2006 Første commandline parameter er alltid selve programmet med full path uansett hva som er gjeldende katalog. D:/Diverse/> P:/eksempelprogram/Start.exe -l norwegian Parameter 1 er P:/eksempelprogram/Start.exe Parameter 2 er -l Parameter 3 er norwegian Bare å erstatte Start.exe med norwegian.lng 5445962[/snapback] Foreslår at du leser svarene over litt bedre eller komme med litt kode som kan bekrefte det du sier... Lenke til kommentar
TorsteinP Skrevet 24. januar 2006 Del Skrevet 24. januar 2006 Foreslår at du leser svarene over litt bedre eller komme med litt kode som kan bekrefte det du sier... 5446502[/snapback] Har faktisk lest svarene ovenfår. Det er din påstand at det ikke fungerer i Windows. Alle utviklingsverktøy jeg har brukt (alle av de mest kjente) støtter argv[0] == aplikasjon med katalogsti. Lenke til kommentar
charlie di meola Skrevet 24. januar 2006 Del Skrevet 24. januar 2006 testet det på vs6 nå og kan underbygge kjetil sin påstand Lenke til kommentar
kjetil7 Skrevet 26. januar 2006 Del Skrevet 26. januar 2006 Foreslår at du leser svarene over litt bedre eller komme med litt kode som kan bekrefte det du sier... 5446502[/snapback] Har faktisk lest svarene ovenfår. Det er din påstand at det ikke fungerer i Windows. Alle utviklingsverktøy jeg har brukt (alle av de mest kjente) støtter argv[0] == aplikasjon med katalogsti. 5489442[/snapback] Det fungerer ikke når applikasjonen ligger i %path% environment-variablen. Det var tross alt det jeg svarte på (derfor jeg siterte dayslepr). Din påstand er dermed ikke riktig. Med teskje: Du starter notepad fra hjemmekatalogen din: C:\Documents and Settings\myuser\my documents>notepad.exe argv[0] er da *ikke* c:\windows\notepad.exe slik du hevder! I Cygwin (og sannsynligvis Linux) er den derimot det. Derfor bør du bruke GetModuleFileName() eller lignende i Windows. charlie di meola bekreftet også dette i innlegget over ... Hvis du vil sjekke selv kan du jo se selv slik jeg gjorde før jeg kom med påstanden min: #include <iostream> int main(int argc, char *argv[], char *envp[]) { for(int i=0; i<argc; i++) { std::cout << "argv[" << i << "]: " << argv[i] << std::endl; } } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå