Mitnichten erwartet die Funktion einen Zeiger auf ein Zeichen. Tatsächlich erwartet sie einen Zeiger auf einen Puffer, der die gewünschten Daten aufnehmen soll. Im Fall eines REG_SZ/REG_EXPAND_SZ ist das entweder ein pchar, ein "array of char" oder eben ein String.
Und da hängt es dann eben vom Typ ab. Da ein String im 0. Zeichen die Länge hat, muss man eben die [1] separat angeben.
Es kann aber auch ein DWORD sein, dann wäre es eben ein Zeiger auf die DWORD-Variable, so wie das Pseudemys Nelson auch gemacht hat. Nur wäre
Result := inttostr(lpData);
wohl sinnvoller als
Zitat:
Result := string(lpData);