Browse Source

* export CreateRegKey and friends from ComObj, resolves #15299
* CreateRegKey throws an EOleRegistrationError exception on error

git-svn-id: trunk@14471 -

florian 15 years ago
parent
commit
30538c4dd3
1 changed files with 17 additions and 11 deletions
  1. 17 11
      packages/winunits-base/src/comobj.pp

+ 17 - 11
packages/winunits-base/src/comobj.pp

@@ -285,6 +285,9 @@ unit comobj;
 
     function ComClassManager : TComClassManager;
 
+    procedure CreateRegKey(const Key, ValueName, Value: string; RootKey: DWord = HKEY_CLASSES_ROOT);
+    procedure DeleteRegKey(const Key: string; RootKey: DWord = HKEY_CLASSES_ROOT);
+    function GetRegStringValue(const Key, ValueName: string; RootKey: DWord = HKEY_CLASSES_ROOT): string;
 
     type
       TCoCreateInstanceExProc = function(const clsid: TCLSID; unkOuter: IUnknown; dwClsCtx: DWORD; ServerInfo: PCoServerInfo;
@@ -442,7 +445,7 @@ implementation
      end;
 {$endif wince}
 
-    procedure CreateRegKey(const Key, ValueName, Value: string);
+    procedure CreateRegKey(const Key, ValueName, Value: string; RootKey: DWord = HKEY_CLASSES_ROOT);
 {$ifndef DUMMY_REG}
       var
         Reg: TRegistry;
@@ -454,7 +457,7 @@ implementation
 {$ifndef DUMMY_REG}
         Reg := TRegistry.Create;
         try
-          Reg.RootKey := HKEY_CLASSES_ROOT;
+          Reg.RootKey := RootKey;
           if Reg.OpenKey(Key, True) then
           begin
             try
@@ -464,7 +467,7 @@ implementation
             end;
           end
           else
-            raise ERegistryException.CreateResFmt(@SRegCreateFailed, [Key]);
+            raise EOleRegistrationError.CreateResFmt(@SRegCreateFailed,[Key]);
         finally
           Reg.Free;
         end;
@@ -474,7 +477,8 @@ implementation
 {$endif}
       end;
 
-    procedure DeleteRegKey(const Key: string);
+
+    procedure DeleteRegKey(const Key: string; RootKey: DWord = HKEY_CLASSES_ROOT);
 {$ifndef DUMMY_REG}
       var
         Reg: TRegistry;
@@ -486,7 +490,7 @@ implementation
 {$ifndef DUMMY_REG}
         Reg := TRegistry.Create;
         try
-          Reg.RootKey := HKEY_CLASSES_ROOT;
+          Reg.RootKey := RootKey;
           Reg.DeleteKey(Key);
         finally
           Reg.Free;
@@ -494,7 +498,8 @@ implementation
 {$endif}
       end;
 
-    function GetRegStringValue(const Key, ValueName: string): string;
+
+    function GetRegStringValue(const Key, ValueName: string; RootKey: DWord = HKEY_CLASSES_ROOT): string;
     {$ifndef DUMMY_REG}
       var
         Reg: TRegistry;
@@ -503,7 +508,7 @@ implementation
        {$ifndef DUMMY_REG}
         Reg := TRegistry.Create();
         try
-          Reg.RootKey := HKEY_CLASSES_ROOT;
+          Reg.RootKey := RootKey;
           if Reg.OpenKeyReadOnly(Key) then
           begin
             try
@@ -520,6 +525,7 @@ implementation
        {$endif}
       end;
 
+
    procedure OleError(Code: HResult);
      begin
        raise EOleSysError.Create('',Code,0);
@@ -1659,11 +1665,11 @@ HKCR
         inherited Create(AComServer, AutoClass, AClassID, AInstancing, AThreadingModel);
       end;
 
-procedure TOleStream.Check(err:integer);
-begin
-  OleCheck(err);
-end;
 
+    procedure TOleStream.Check(err:integer);
+      begin
+        OleCheck(err);
+      end;
 
 const
   Initialized : boolean = false;