Anfänger Syntax-Fragen



  • Hallo,

    habe vor kurzem mit C++ angefangen und mal mir mit Hilfe des .net Frameworks meinen Pfad vom desktop Hintergrund ausgegeben

    char pfad[MAX_PATH];
    SystemParametersInfo(SPI_GETDESKWALLPAPER, 115, pfad,0);
    

    Mein Fragen sind nun:

    1. Wenn ich statt 115 etwas anderes eingebe z.B 200 oder auch MAX_PATH gibt es immer Fehler. Wieso kommt es zu diesem Fehler. Es handelt sich dabei um einen Zugriffsverletzungsfehler.
    Die Beschreibung sagt das dort die Anzahl der Character stehen soll die im Buffer hier bei mir "pfad" gespeichert wird.

    2. Wenn ich mir den char array mit einer Schleife ausgeben lasse sind zwischen den Buchstaben immer zusätliche Leerzeichen:

    C : \ D o k u m e n t e u n d E i n s t e l l u n g e n

    so das ich die Schleifen mit i+=2; für eine normalausgabe durchlaufen müsste.
    Dennoch wüsste ich gern wieso das so ist.

    Ich hoffe ihr könnt mir hier etwas Licht ins dunkel bringen.


  • Mod

    Du hast ein Unicode Programm!
    D.h. die Daten kommen als wchar_t zurück und nicht als char!

    Deklariere den pfad als

    TCHAR pfad[MAX_PATH];
    


  • danke geht, dann wollt ich nochmal wissen die unterschiede

    statt TCHAR kann ich ja auch wchar_t schreiben ist denke ich nur ein mapping und macht daher keinen unterschied

    laut msdn kann TCHAR für ASCII als auch UNICODE verwendet werden. und WCHAR nur für unicode

    liege ich mit den aussagen richtig?


  • Mod

    TCHAR ist der Typ den alle Win API Funktionen ohne Endung A/W verwenden. Es ist wchar_t in einem Unicode Projekt undchar in einem MBCS Projekt.


Log in to reply