Quote:
|
HKEY hKeyValue = NULL; // mit null initialisieren ist unnötig oder? //
|
Lieber einmal zu viel mit NULL einen Pointer ungültig machen, als dass man zur Runtime einen Error bekommt. Das ist guter Stil.
Quote:
|
DWORD bufferLen = 128; // warum 128? //
|
Die Zahl ist beliebig. Ich habe den Buffer halt mal 128Zeichen groß gemacht. Dachte das wird genügen. Man kann ihn aber auch größer/kleiner machen.
Quote:
|
BYTE buffer[bufferLen]; // ließ sich bei mir nicht kompilieren. Da muss eine Konstante rein //
|
Kommt davon, wenn man den Microsoft-Compiler verwendet :) MinGW meckert nicht. Beim Microsoft Compiler müsstest du es so machen:
Code:
DWORD bufferLen = 128;
BYTE buffer[128];
Du darfst hierbei 'bufferLen' nicht als Konstante setzen, da du sie später als in/out Pointer an RegQueryValueEx() übergibst.
Quote:
|
buffer[bufferLen] = 0; // warum den string mit null terminieren? funktionieren tut es auch ohne //
|
Terminieren tut man ein C-String eigentlich immer. Dass es bei dir auch ohne funktioniert, liegt wohl einfach daran, dass der Compiler dafür gesorgt hat, dass der Speicher zuvor mit '0' aufgefüllt wurde. vgl. ZeroMemory().
Quote:
Außerdem musste ich bei mir immer vor dem Pfad des Schlüssels und dem Namen das Makro _T benutzen, sonst gab es einen Fehler mit den Typen.
Und bei der Ausgabe sind zwischen den Buchstaben immer Leerzeichen. Auch komisch...
|
Das liegt daran, dass du Unicode verwendest und ich Ansi. Entweder du stellst das in den Projekteinstellungen um, oder du verwendest anstatt "char" "wchar_t" und "wcout" anstatt "cout".