GetSystemDirectory gibt immer einen Fehler



  • Hey.
    Warscheinlich gibt es eine ganz einfach Lösung für mein Problem, aber ich komme nicht darauf. Diese Funktion rufe ich einfach auf in einer Console. Doch dann kommt immer eine Fehlermeldung:

    console.exe hat ein Problem festgestellt und muss beendet werden.

    void GetSystemDirectoryExample()
    {
        LPTSTR lpBuffer;
        UINT uSize;
    
        GetSystemDirectory(lpBuffer, uSize);
    
        cout<<lpBuffer<<endl;
        }
    

    Ich weiß nicht weiter... Habe schon probiert an den Datentypen herumzubasteln^^
    Z.B. einfach "LPTSTR" durch ein "char" ersetzt und dann einfach ein Referenzzeichen bei dem Parameter mit angegeben, aber das hat es nicht gebracht 😞

    Hoffe ihr könnt mir helfen.
    Gruß Speedy_92



  • Hallo

    Du must für dem Pointer lpBuffer erstmal speicher reservieren. Und dir Größe dieses Speichers übergibst du dann als uSize.

    bis bald
    akari



  • Entschuldigung, wenn ich das jetzt frage, aber wie mache ich das???

    Könnte mir vielleicht jemand ein Beispiel geben?

    Also ich habe es mit Pointergefrickel versucht, bin aber nicht darauf gekommen 😞

    Ich habe es jetzt so probiert:

    char *lpBuffer = new char;
        *lpBuffer = sizeof(char);
        unsigned int uSize = *lpBuffer;
    

    Aber wenn ich lpBuffer ausgeben lasse auf der Console kommt irgendwie ein Zeichen, das aussieht wie ein Smilie 😕



  • Hallo

    void GetSystemDirectoryExample()
    {
        UINT uSize = 100;
        LPTSTR lpBuffer = new char[uSize]; // Ich glaube TCHAR ist der entsprechende WinAPI-Typdef
    
        GetSystemDirectory(lpBuffer, uSize);
    
        cout<<lpBuffer<<endl;
        delete[] lpBuffer;
        }
    

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dankeschön erst einmal.
    Hätte allerdings eine klitzekleine Frage noch.
    In dieser Zeile:

    UINT uSize = 100;
        LPTSTR lpBuffer = new char[uSize];
    

    Wird dort ein Speicherbereich von 100 Byte reserviert??? Oder eine andere Größe???



  • Hallo

    Es wird ein Speicherbereich für 100 chars reserviert. Ein char muß nicht 1 Byte entsprechen (ist aber meistens der Fall).

    bis bald
    akari


Anmelden zum Antworten