|
@@ -42,6 +42,17 @@ begin
|
|
Result:=(S='') or (S[1]<>'\')
|
|
Result:=(S='') or (S[1]<>'\')
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function RegDataWordToRegDataType(RD: DWORD): TRegDataType;
|
|
|
|
+begin
|
|
|
|
+ // Test in ascending because rdString is most commonly used
|
|
|
|
+ Result := Succ(Low(RegDataWords));
|
|
|
|
+ repeat
|
|
|
|
+ if RegDataWords[Result] = RD then
|
|
|
|
+ Exit;
|
|
|
|
+ Inc(Result);
|
|
|
|
+ until Result > High(Result);
|
|
|
|
+ Result := Low(RegDataWords);
|
|
|
|
+end;
|
|
|
|
|
|
function TRegistry.sysCreateKey(Key: UnicodeString): Boolean;
|
|
function TRegistry.sysCreateKey(Key: UnicodeString): Boolean;
|
|
Var
|
|
Var
|
|
@@ -95,9 +106,7 @@ begin
|
|
Result:=-1
|
|
Result:=-1
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- RegData:=High(TRegDataType);
|
|
|
|
- While (RegData>rdUnknown) and (RD<>RegDataWords[RegData]) do
|
|
|
|
- RegData:=Pred(RegData);
|
|
|
|
|
|
+ RegData:=RegDataWordToRegDataType(RD);
|
|
Result:=BufSize;
|
|
Result:=BufSize;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
@@ -110,15 +119,10 @@ Var
|
|
begin
|
|
begin
|
|
With Value do
|
|
With Value do
|
|
begin
|
|
begin
|
|
- FLastError:=RegQueryValueExW(fCurrentKey,PWideChar(ValueName),Nil,lpdword(@RegData),Nil,lpdword(@DataSize));
|
|
|
|
|
|
+ FLastError:=RegQueryValueExW(fCurrentKey,PWideChar(ValueName),Nil,@RD,Nil,lpdword(@DataSize));
|
|
Result:=FLastError=ERROR_SUCCESS;
|
|
Result:=FLastError=ERROR_SUCCESS;
|
|
if Result then
|
|
if Result then
|
|
- begin
|
|
|
|
- RD:=DWord(RegData);
|
|
|
|
- RegData:=High(TRegDataType);
|
|
|
|
- While (RegData>rdUnknown) and (RD<>RegDataWords[RegData]) do
|
|
|
|
- RegData:=Pred(RegData);
|
|
|
|
- end;
|
|
|
|
|
|
+ RegData:=RegDataWordToRegDataType(RD);
|
|
end;
|
|
end;
|
|
If Not Result Then
|
|
If Not Result Then
|
|
begin
|
|
begin
|