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.
-
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?
-
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.