/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Den rette måde at få currentdirectory på ?
Fra : aslak


Dato : 30-05-01 18:33

Jeg har et windows-program, program.exe, der har brug for at kende stien /
path til sig selv! Hvordan kan det gøres ?

Jeg har forsøgt mig med ::GetCurrentDirectory(bufferlength,buffer) men jeg
får ofte blot et drev navn (fx. F:\) ud af det - mens andre gange går det
fint!!? Hvorfor denne opførsel tænker jeg så!

Kan det have noget med at der er mellemrum i nogle af bibleoteksnavnene (fx.
Program Files, Common Files, etc) ??

Findes der ikke noget i MFC der kan gøre jobbet ordentligt?

På Forhånd TAK,
Rasmus



 
 
Kent Friis (30-05-2001)
Kommentar
Fra : Kent Friis


Dato : 30-05-01 18:40

Den Wed, 30 May 2001 19:33:15 +0200 skrev aslak:
>Jeg har et windows-program, program.exe, der har brug for at kende stien /
>path til sig selv! Hvordan kan det gøres ?
>
>Jeg har forsøgt mig med ::GetCurrentDirectory(bufferlength,buffer) men jeg
>får ofte blot et drev navn (fx. F:\) ud af det - mens andre gange går det
>fint!!? Hvorfor denne opførsel tænker jeg så!
>
>Kan det have noget med at der er mellemrum i nogle af bibleoteksnavnene (fx.
>Program Files, Common Files, etc) ??
>
>Findes der ikke noget i MFC der kan gøre jobbet ordentligt?

I et C-program ligger den information (i princippet) i argv[0] - det
er dog ikke altid man kan regne med det. Jeg ved ikke om windows
udfylder den variabel ordenligt.

Mvh
Kent
--
http://www.celebrityshine.com/~kfr/

aslak (30-05-2001)
Kommentar
Fra : aslak


Dato : 30-05-01 18:48

> I et C-program ligger den information (i princippet) i argv[0] - det
> er dog ikke altid man kan regne med det. Jeg ved ikke om windows
> udfylder den variabel ordenligt.
>
> Mvh
> Kent

Programmet er skrevet i C++ og jeg har brugt MFC flittigt! (Visual C++).
Ellers tak.
Rasmus



aslak (30-05-2001)
Kommentar
Fra : aslak


Dato : 30-05-01 19:29

Jeg fik dette svar på en anden ng;

GetModuleFileName eller GetModuleFileNameEx.
For eksempel:

TCHAR buf[_MAX_PATH];
GetModuleFileName(AfxGetApp()->m_hInstance,buf,_MAX_PATH);

Det virker perfekt!!

Rasmus Kjær




Bertel Lund Hansen (30-05-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 30-05-01 20:21

Kent Friis skrev:

>I et C-program ligger den information (i princippet) i argv[0] - det
>er dog ikke altid man kan regne med det. Jeg ved ikke om windows
>udfylder den variabel ordenligt.

Det virker i TP, C og batfiler under Win9x.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Anders Bo Rasmussen (31-05-2001)
Kommentar
Fra : Anders Bo Rasmussen


Dato : 31-05-01 16:41

On Wed, 30 May 2001 17:39:38 +0000 (UTC),
Kent Friis <kfr@fleggaard.dk> wrote:

>I et C-program ligger den information (i princippet) i argv[0] - det
>er dog ikke altid man kan regne med det. Jeg ved ikke om windows
>udfylder den variabel ordenligt.

Det er da .exe-filens navn der ligger der (K&R, 5.10). Så hvis der et
directory med, må det være .exe'filens directory, hvilket ikke
nødvendigvis er det samme som det man står i.

--
Anders Bo Rasmussen mailto:fuzz01@spamfilter.dk
Frimestervej 42 1.tv http://www.fuzz.dk
2400 Kbh. NV
Denmark

Anders Bo Rasmussen (31-05-2001)
Kommentar
Fra : Anders Bo Rasmussen


Dato : 31-05-01 16:43

On Thu, 31 May 2001 17:41:26 +0200,
Anders Bo Rasmussen <fuzz01@spamfilter.dk> wrote:

>On Wed, 30 May 2001 17:39:38 +0000 (UTC),
>Kent Friis <kfr@fleggaard.dk> wrote:
>
>>I et C-program ligger den information (i princippet) i argv[0] - det
>>er dog ikke altid man kan regne med det. Jeg ved ikke om windows
>>udfylder den variabel ordenligt.
>
>Det er da .exe-filens navn der ligger der (K&R, 5.10). Så hvis der et
>directory med, må det være .exe'filens directory, hvilket ikke
>nødvendigvis er det samme som det man står i.

Hovsa. Jeg havde ikke lige læst spørgsmålet godt nok - regnede med at
der blev spurgt om subject.

--
Anders Bo Rasmussen mailto:fuzz01@spamfilter.dk
Frimestervej 42 1.tv http://www.fuzz.dk
2400 Kbh. NV
Denmark

Christian Drivsholm (05-06-2001)
Kommentar
Fra : Christian Drivsholm


Dato : 05-06-01 18:59

Hej

Følgende kode virker i Borland C++ Builder 5:


file://---------------------------------------------------------------------
------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
file://---------------------------------------------------------------------
------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
file://---------------------------------------------------------------------
------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
file://---------------------------------------------------------------------
------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = ExtractFilePath(ParamStr(0));
}
file://---------------------------------------------------------------------
------



Håber det kan hjælpe dig.


Hilsen
Christian Drivsholm
Århus
www.christiandrivsholm.suite.dk





aslak <familienkjaer@mail1.stofanet.dk> skrev i en
nyhedsmeddelelse:9f3apl$eop$1@sunsite.dk...
> Jeg har et windows-program, program.exe, der har brug for at kende stien /
> path til sig selv! Hvordan kan det gøres ?
>
> Jeg har forsøgt mig med ::GetCurrentDirectory(bufferlength,buffer) men jeg
> får ofte blot et drev navn (fx. F:\) ud af det - mens andre gange går det
> fint!!? Hvorfor denne opførsel tænker jeg så!
>
> Kan det have noget med at der er mellemrum i nogle af bibleoteksnavnene
(fx.
> Program Files, Common Files, etc) ??
>
> Findes der ikke noget i MFC der kan gøre jobbet ordentligt?
>
> På Forhånd TAK,
> Rasmus
>
>



Claus Brinch Jensen (07-06-2001)
Kommentar
Fra : Claus Brinch Jensen


Dato : 07-06-01 18:59

aslak,

Måden at gøre det på er at bruge GetModuleFileName og derefter cutte ved det
sidste backslash i filnavnet der returneres af denne.

Bemærk i øvrigt at current directory ikke er det samme som det directory
programmet er startet fra. Men det har du jo også fundet ud af.

Jeg har tidligere lavet nedenstående funktion til formålet.

char const * get_app_path()
{
static char szFileName[MAX_PATH];
DWORD dwResult;
dwResult = GetModuleFileNameA(NULL, szFileName, MAX_PATH);
if(dwResult != 0) {
char * p1;
p1 = (char*)_mbsrchr((unsigned char *)szFileName, '\\');
if(p1 != 0) {
*p1 = '\0';
}
} else strcpy(szFileName, "");
return szFileName;
}

--
Claus Brinch Jensen

-!- If replying by e-mail please remove ALL dashes from the e-mail address.
"aslak" <familienkjaer@mail1.stofanet.dk> wrote in message
news:9f3apl$eop$1@sunsite.dk...
> Jeg har et windows-program, program.exe, der har brug for at kende stien /
> path til sig selv! Hvordan kan det gøres ?
>
> Jeg har forsøgt mig med ::GetCurrentDirectory(bufferlength,buffer) men jeg
> får ofte blot et drev navn (fx. F:\) ud af det - mens andre gange går det
> fint!!? Hvorfor denne opførsel tænker jeg så!
>
> Kan det have noget med at der er mellemrum i nogle af bibleoteksnavnene
(fx.
> Program Files, Common Files, etc) ??
>
> Findes der ikke noget i MFC der kan gøre jobbet ordentligt?
>
> På Forhånd TAK,
> Rasmus
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste