Gå til innhold

Lese filer frå same mappe som programmet litt i


Anbefalte innlegg

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
Videoannonse
Annonse
  • 2 uker senere...

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
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
  • 2 uker senere...
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
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...