rückgabewert von GetEnvironmentVariable eigenartig



  • Hallo,
    Ich habe folgende Funktion:

    char* getEnv(char name[]) {
        char *env;
        env = new char[512];
        GetEnvironmentVariable(name , env, 512);
        printf ("%d ", strlen(env));
        printf ("%s", env);
        return env;
    }
    

    die GetEnvironmentVariable ist aus der windows.h
    Beim Aufruf von getEnv("JAVA_HOME") gib er mir
    13 C:\jdk\1.5.0\
    aus,nur wenn ich einen Namen angebe den es nicht gibt (z.B. getEnv("Osterhase") ) gibt er mir
    3 tÕ@
    aus.
    Ich würde gerne prüfen ob ein Ergbnis ermittelt werden konnte oder nicht, was ich eigentlich über die Länge des Rückgabewertes machen wollte.
    Nur geht das ja anscheint nicht so.
    Mach ich hier was falsch oder liefert mir GetEnvironmentVariable etwas spezielles wenn er die Umgebungsvariable nicht finden kann?

    Außerdem gefällt mir die Einschränkung auf 512 Zeichen nicht, kann man das anders lösen?

    Und gibt es sowas wie ne Javadoc für die windows.h? Alles über google zu suchen ist irgendwie ... naja.



  • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getenvironmentvariable.asp

    If the function fails, the return value is zero.

    also GetEnvironmentVariable auf 0 pruefen



  • Hab deine Source nicht weiter gelesen...

    if(GetLastError() == ERROR_ENVVAR_NOT_FOUND)
    


  • Alles klor, danke.



  • Das der Buffer eine feste Größe hat stört.
    Wenn der Buffer zu gross ist, ist es kein Problem da die Funktion mir ja die Anzahl der gespeicherten Zeichen zurückliefert aber wenn der Bufferzu klein ist fehlt mir etwas.
    Kann ich im vorhinein auslesen wie lang der Inhalt der Umgebungsvariable ist sprich wie groß der Buffer mindestens sein muss um den gesamte Inhalt auszulesen?
    Oder kann ich das irgendwie anders lösen?


Anmelden zum Antworten