Ich persönlich habe Bedenken deswegen:
Zitat von
Pseudemys Nelsoni:
Delphi-Quellcode:
if RegQueryValueEx(KeyH, PAnsiChar(Key), nil, nil, nil, @dwLen) = ERROR_SUCCESS then
begin
Setlength(value, dwLen - 1);
Im
PSDK wird gesagt, dass die benötigte Puffergröße in die dword-Variable geschrieben wird, wenn diese vorher mit einem Wert belegt war. Ob nun 0 oder 1, spielt keine Rolle. Das "NULL" im Text des
PSDK entspricht ja dem "NIL" von Delphi:
Zitat:
If lpData is NULL, and lpcbData is non-NULL, the function returns ERROR_SUCCESS and stores the size of the data, in bytes, in the variable pointed to by lpcbData. This enables an application to determine the best way to allocate a buffer for the value's data.
Da steht aber nicht so was wie
Zitat:
... and stores the size of the data, in bytes, in the variable [...] not including the last character
Ich würde den Puffer daher so lassen und bei Strings erst nach dem erfolgreichen Auslesen das letzte Zeichen entfernen. Oder evtl. prüfen ob das letzte Zeichen auch wirklich #0 ist.