17. september 2004 - 09:13
Der er
14 kommentarer og 1 løsning
GetModuleFileName() i Visual C++ kun sti
Hvordan får man stien fra ovennævnte funktion (altså eksklusive filnavn)? Det er nok noget streng gymnastik, men hvordan? Hvis du har en anden måde at finde stien til programmets exe fil runtime er det også fint...
Annonceindlæg fra DE-CIX
17. september 2004 - 09:36
#1
Hvis du bruger C++ 7, så findes der en klasse CPath der kan diverse ting - bla. fjerne filnavn (RemoveFileSpec())
17. september 2004 - 09:40
#2
Jeg bruger C++ 7, men kender ikke CPath... Kan du komme med det kode eksempel?
17. september 2004 - 10:00
#3
Noget i stil med ... CPathA path; DWORD dwLen = GetModuleFileName( _AtlBaseModule.GetModuleInstance(), CStrBufA(path, MAX_PATH + 1), MAX_PATH + 1 ); if( dwLen == 0 || dwLen == MAX_PATH+1 ) return FALSE; if( !path.RemoveFileSpec() ) return FALSE; // path indeholder stien...
17. september 2004 - 10:03
#4
17. september 2004 - 10:04
#5
får en fejl: CPath: undeclared identifier Mangler jeg en include eller sådan noget?
17. september 2004 - 10:07
#6
Ja, du skal ha' en #include <atlpath.h>
17. september 2004 - 10:11
#7
Jeg får en masse nye fejl hvis jeg tilføjer den include: f.eks. 'PathAddBackslashA': is not a mamber of 'operator``global namespace'" Hvordan slipper jeg af med den?
17. september 2004 - 10:16
#8
... kan du ikke poste lidt af din kode
17. september 2004 - 10:20
#9
jo da: #include "stdafx.h" #include "BundleSetup.h" #include "BundleSetupDlg.h" #include ".\bundlesetupdlg.h" #include <fstream> #include "string.h" //#include <atlpath.h> ..... CString strPath; GetModuleFileName(0, strPath.GetBuffer(_MAX_PATH), _MAX_PATH); strPath.ReleaseBuffer(); // CPath pathDir = CPath(PATH_MODULE); // pathDir.RemoveFileSpec(); MessageBox(strPath, "Module location", MB_OK); CPath delen er kommenteret ud fordi den ikke virker pga. de ene af de 2 fejl jeg har angivet
17. september 2004 - 11:23
#10
.. det her oversætter fint ved mig : CString strPath; GetModuleFileName(0, strPath.GetBuffer(_MAX_PATH), _MAX_PATH); strPath.ReleaseBuffer(); CPath pathDir = CPath(strPath); pathDir.RemoveFileSpec(); MessageBox(NULL, strPath, "Module location", MB_OK); ... prøv evt. at bruge en CPathA
17. september 2004 - 11:25
#11
den kan ikke finde CPath hos mig, men dette virker: CString strPath; GetModuleFileName(0, strPath.GetBuffer(_MAX_PATH), _MAX_PATH); strPath.ReleaseBuffer(); strPath = strPath.Left(strPath.ReverseFind('\\\\')); og tak for hjælpen, jeg kom da på ret kurs
17. september 2004 - 11:28
#12
hmm... mærkeligt...
17. september 2004 - 11:58
#13
Jeg ved ikke hvorfor jeg ikke kan bruge CPath, men det kan jeg forske i senere, nu har jeg i hvert fald fundet en løsning :o)
17. september 2004 - 12:35
#14
hehe - Ja, det er da i det mindste noget :)
18. september 2004 - 14:38
#15
Det her er hverken C++, MFC eller andet: char buf[1000]; GetModuleFileName(NULL,buf,sizeof(buf)); *(strrchr(buf,'\\')+1) = '\0';
Kurser inden for grundlæggende programmering