Archiv verlassen und diese Seite im Standarddesign anzeigen : [c++] Application::StartupPath; alternative
heatshock
16.10.2008, 22:13
ich such sowas wie
Application::StartupPath;
nur halt kein .net
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx
Meinst du das?
E: Sorry, habs nur schnell überflogen und nen C++ code gesehen - ich such nochmal
heatshock
16.10.2008, 22:16
ja aber
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5
http://www.gamedev.net/community/forums/topic.asp?topic_id=510880
Das sollte helfen...
heatshock
16.10.2008, 22:37
ich bekomme es irgentwie nicht hin...
argv[0]
funzt nicht da gibt er mir nur irgentwelche nummern aus... immer verschiedene..
und
char module_name[MAX_PATH];
GetModuleFileName(0, module_name, MAX_PATH);
std::string path(module_name);
path.erase(path.find_last_of('\\'), std::string::npos);
da spuckt er mir nur fehler aus..
blackberry
16.10.2008, 22:55
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int main(void)
{
char buffer[200];
int i = 0;
GetModuleFileName(0, buffer, sizeof(buffer) - 1);
printf("#1 %s\n", buffer);
/* runterzählen bis gillt: i = 0, oder ein backslash gefunden wurde */
for(i = strlen(buffer); i && buffer[i] != '\\'; i--);
/* bytes verschieben */
memmove(buffer, &buffer[i + 1], strlen(buffer) - i);
/* nullbyte setzen um den rest des strings 'abzutrennen' */
buffer[strlen(buffer) - i] = 0;
printf("#2 %s\n", buffer);
getc(stdin);
return 0;
}
das geht sicher auch einfacher, aber ich habe mal ein bisschen improvisiert und die String-Klasse aus dem "Spiel" rausgelassen...
Ausgabe sieht wie folgt aus:
#1 C:\Users\Home\Desktop\a.exe
#2 a.exe
Über ARGV ginge das dann so (das ist auch Linux kompatibel, solang man den Backslash mit einem normalen Slash ersetzen würde...):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int main(int argc, char *argv[])
{
int i = 0;
printf("#1 %s\n", argv[0]);
/* runterzählen bis gillt: i = 0, oder ein backslash gefunden wurde */
for(i = strlen(argv[0]); i && argv[0][i] != '\\'; i--);
/* bytes verschieben */
memmove(argv[0], &argv[0][i + 1], strlen(argv[0]) - i);
/* nullbyte setzen um den rest des strings 'abzutrennen' */
argv[0][strlen(argv[0]) - i] = 0;
printf("#2 %s\n", argv[0]);
getc(stdin);
return 0;
}
Hoffe das hilft dir weiter ;)
heatshock
16.10.2008, 23:23
ja danke das funzt jetz..
char *Buffer = new char[MAX_PATH+2];
GetModuleFileNameA(0, Buffer, MAX_PATH);
MessageBoxA(0, Buffer, "Current FilePath", MB_ICONINFORMATION);
delete[] Buffer;
falls reiner Pfad erwünscht
char *Buffer = new char[MAX_PATH+2];
GetModuleFileNameA(0, Buffer, MAX_PATH);
for(int i = lstrlenA(Buffer); i > 0; i--)
{
if(Buffer[i]=='\\')
{
Buffer[i] = '\0';
break;
}
}
MessageBoxA(0, Buffer, "Current FilePath", MB_ICONINFORMATION);
delete[] Buffer;
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.