|
@@ -199,23 +199,26 @@ end;
|
|
|
|
|
|
function RegSetValueExA(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; lpData:pointer;cbData:DWORD):LONG;
|
|
function RegSetValueExA(hKey:HKEY; lpValueName:LPCSTR; Reserved:DWORD; dwType:DWORD; lpData:pointer;cbData:DWORD):LONG;
|
|
var
|
|
var
|
|
- lpwsValueName: PWideChar;
|
|
|
|
|
|
+ lpwsValueName, ws: PWideChar;
|
|
DataBuf: pointer;
|
|
DataBuf: pointer;
|
|
sz: DWORD;
|
|
sz: DWORD;
|
|
begin
|
|
begin
|
|
lpwsValueName:=PCharToPWideChar(lpValueName);
|
|
lpwsValueName:=PCharToPWideChar(lpValueName);
|
|
if dwType in [REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ] then begin
|
|
if dwType in [REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ] then begin
|
|
- DataBuf:=PCharToPWideChar(lpData, cbData, @sz);
|
|
|
|
|
|
+ ws:=PCharToPWideChar(lpData, cbData, @sz);
|
|
if (cbData > 0) and (PChar(lpData)[cbData - 1] <> #0) then
|
|
if (cbData > 0) and (PChar(lpData)[cbData - 1] <> #0) then
|
|
Inc(sz, SizeOf(WideChar));
|
|
Inc(sz, SizeOf(WideChar));
|
|
cbData:=sz;
|
|
cbData:=sz;
|
|
|
|
+ DataBuf:=ws;
|
|
end
|
|
end
|
|
- else
|
|
|
|
|
|
+ else begin
|
|
DataBuf:=lpData;
|
|
DataBuf:=lpData;
|
|
|
|
+ ws:=nil;
|
|
|
|
+ end;
|
|
Result:=RegSetValueExW(hKey, lpwsValueName, Reserved, dwType, DataBuf, cbData);
|
|
Result:=RegSetValueExW(hKey, lpwsValueName, Reserved, dwType, DataBuf, cbData);
|
|
FreeMem(lpwsValueName);
|
|
FreeMem(lpwsValueName);
|
|
- if DataBuf <> nil then
|
|
|
|
- FreeMem(DataBuf);
|
|
|
|
|
|
+ if ws <> nil then
|
|
|
|
+ FreeMem(ws);
|
|
end;
|
|
end;
|
|
|
|
|
|
{$endif read_implementation}
|
|
{$endif read_implementation}
|