Ergebnis 1 bis 8 von 8
  1. #1
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard [c++] Application::StartupPath; alternative

    ich such sowas wie
    Code:
    Application::StartupPath;
    nur halt kein .net


  2. #2
    CIH-Virus Avatar von QpL
    Registriert seit
    14.01.2007
    Beiträge
    483

    Standard

    http://msdn.microsoft.com/en-us/libr...artuppath.aspx

    Meinst du das?

    E: Sorry, habs nur schnell überflogen und nen C++ code gesehen - ich such nochmal

  3. #3
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard

    ja aber
    Code:
    This page is specific to 
    Microsoft Visual Studio 2008/.NET Framework 3.5


  4. #4
    CIH-Virus Avatar von QpL
    Registriert seit
    14.01.2007
    Beiträge
    483
    *Haftungsausschluss*
    *People-I-Respect-Table*


  5. #5
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard

    ich bekomme es irgentwie nicht hin...

    Code:
    argv[0]
    funzt nicht da gibt er mir nur irgentwelche nummern aus... immer verschiedene..

    und

    Code:
      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..


  6. #6
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Code:
    #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:
    Code:
    #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...):
    Code:
    #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

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  7. #7
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard

    ja danke das funzt jetz..


  8. #8
    Michelangelo Virus
    Registriert seit
    14.06.2007
    Beiträge
    282

    Standard

    Code:
    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

    Code:
    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;
    Write the code correctly and it will compile

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •