xregreg.inc 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. { ---------------------------------------------------------------------
  2. System dependent Registry implementation - using XML file.
  3. ---------------------------------------------------------------------}
  4. uses xmlreg;
  5. Const
  6. XFileName = 'reg.xml';
  7. Procedure TRegistry.SysRegCreate;
  8. begin
  9. FSysData:=TXMLRegistry.Create(XFileName);
  10. TXmlRegistry(FSysData).AutoFlush:=False;
  11. end;
  12. Procedure TRegistry.SysRegFree;
  13. begin
  14. TXMLRegistry(FSysData).Flush;
  15. FSysData:=TXMLRegistry.Create(XFileName);
  16. end;
  17. function TRegistry.SysCreateKey(const Key: String): Boolean;
  18. begin
  19. Result:=TXmlRegistry(FSysData).CreateKey(Key);
  20. end;
  21. function TRegistry.DeleteKey(const Key: String): Boolean;
  22. begin
  23. Result:=TXMLRegistry(FSysData).DeleteKey(Key);
  24. end;
  25. function TRegistry.DeleteValue(const Name: String): Boolean;
  26. begin
  27. Result:=TXmlRegistry(FSysData).DeleteValue(Name);
  28. end;
  29. function TRegistry.SysGetData(const Name: String; Buffer: Pointer;
  30. BufSize: Integer; var RegData: TRegDataType): Integer;
  31. Var
  32. DataType : TDataType;
  33. BS : Integer;
  34. begin
  35. If TXmlregistry(FSysData).GetValueData(Name,DataType,Buffer^,BS) then
  36. begin
  37. Case DataType of
  38. dtUnknown : RegData:=rdUnknown;
  39. dtString : RegData:=rdString;
  40. dtDWord : RegData:=rdInteger;
  41. dtBinary : RegData:=rdBinary;
  42. end;
  43. end
  44. else
  45. Result:=-1;
  46. end;
  47. function TRegistry.GetDataInfo(const ValueName: String; var Value: TRegDataInfo): Boolean;
  48. Var
  49. Info : TDataInfo;
  50. begin
  51. Result := TXmlRegistry(FSysData).GetValueInfo(ValueName,Info);
  52. If Not Result then
  53. With Value do
  54. begin
  55. RegData:=rdunknown;
  56. DataSize:=0;
  57. end
  58. else
  59. With Value do
  60. begin
  61. Case Info.DataType of
  62. dtUnknown: RegData:=rdUnknown;
  63. dtDword : Regdata:=rdInteger;
  64. dtString : RegData:=rdString;
  65. dtBinary : RegData:=rdBinary;
  66. end;
  67. DataSize:=Info.DataSize;
  68. end;
  69. end;
  70. function TRegistry.GetKey(const Key: String): HKEY;
  71. begin
  72. Result := 0;
  73. end;
  74. function TRegistry.GetKeyInfo(var Value: TRegKeyInfo): Boolean;
  75. Var
  76. Info : TKeyInfo;
  77. begin
  78. Result:=TXmlRegistry(FSysData).GetKeyInfo(info);
  79. If Result then
  80. With Value,Info do
  81. begin
  82. NumSubKeys:=SubKeys;
  83. MaxSubKeyLen:=SubKeyLen;
  84. NumValues:= Values;
  85. MaxValueLen:=ValueLen;
  86. MaxDataLen:=DataLen;
  87. FileTime:=FTime;
  88. end;
  89. end;
  90. function TRegistry.KeyExists(const Key: string): Boolean;
  91. begin
  92. Result:=TXmlRegistry(FSysData).KeyExists(Key);
  93. end;
  94. function TRegistry.LoadKey(const Key, FileName: string): Boolean;
  95. begin
  96. Result := False;
  97. end;
  98. function TRegistry.OpenKey(const Key: string; CanCreate: Boolean): Boolean;
  99. begin
  100. Result:=TXmlRegistry(FSysData).SetKey(Key,CanCreate);
  101. FCurrentKey:=1;
  102. end;
  103. function TRegistry.OpenKeyReadOnly(const Key: string): Boolean;
  104. begin
  105. Result:=TXmlRegistry(FSysData).SetKey(Key,False);
  106. end;
  107. function TRegistry.RegistryConnect(const UNCName: string): Boolean;
  108. begin
  109. Result := True;
  110. end;
  111. function TRegistry.ReplaceKey(const Key, FileName, BackUpFileName: string): Boolean;
  112. begin
  113. Result := False;
  114. end;
  115. function TRegistry.RestoreKey(const Key, FileName: string): Boolean;
  116. begin
  117. Result := False;
  118. end;
  119. function TRegistry.SaveKey(const Key, FileName: string): Boolean;
  120. begin
  121. Result := False;
  122. end;
  123. function TRegistry.UnLoadKey(const Key: string): Boolean;
  124. begin
  125. Result := False;
  126. end;
  127. function TRegistry.ValueExists(const Name: string): Boolean;
  128. begin
  129. Result := TXmlRegistry(FSysData).ValueExists(Name);
  130. end;
  131. procedure TRegistry.ChangeKey(Value: HKey; const Path: String);
  132. begin
  133. end;
  134. procedure TRegistry.GetKeyNames(Strings: TStrings);
  135. begin
  136. TXmlRegistry(FSysData).EnumSubKeys(Strings);
  137. end;
  138. procedure TRegistry.GetValueNames(Strings: TStrings);
  139. begin
  140. TXmlRegistry(FSysData).EnumValues(Strings);
  141. end;
  142. Function TRegistry.SysPutData(const Name: string; Buffer: Pointer;
  143. BufSize: Integer; RegData: TRegDataType) : Boolean;
  144. Var
  145. DataType : TDataType;
  146. begin
  147. Case RegData of
  148. rdUnknown : DataType := dtUnknown;
  149. rdString,rdExpandString : DataType := dtString;
  150. rdInteger : DataType := dtDword;
  151. rdBinary : DataType := dtBinary;
  152. end;
  153. Result:=TXMLRegistry(FSysData).SetValueData(Name,DataType,Buffer^,BufSize);
  154. end;
  155. procedure TRegistry.RenameValue(const OldName, NewName: string);
  156. begin
  157. TXMLRegistry(FSysData).RenameValue(OldName,NewName);
  158. end;
  159. procedure TRegistry.SetCurrentKey(Value: HKEY);
  160. begin
  161. fCurrentKey := Value;
  162. end;
  163. procedure TRegistry.SetRootKey(Value: HKEY);
  164. Var
  165. S: String;
  166. begin
  167. If (Value=HKEY_CLASSES_ROOT) then
  168. S:='HKEY_CLASSES_ROOT'
  169. else if (Value=HKEY_CURRENT_USER) then
  170. S:='HKEY_CURRENT_USER'
  171. else if (Value=HKEY_LOCAL_MACHINE) then
  172. S:='HKEY_LOCAL_MACHINE'
  173. else if (Value=HKEY_USERS) then
  174. S:='HKEY_USERS'
  175. else if Value=HKEY_PERFORMANCE_DATA then
  176. S:='HKEY_PERFORMANCE_DATA'
  177. else if (Value=HKEY_CURRENT_CONFIG) then
  178. S:='HKEY_CURRENT_CONFIG'
  179. else if (Value=HKEY_DYN_DATA) then
  180. S:='HKEY_DYN_DATA'
  181. else
  182. S:=Format('Key%d',[Value]);
  183. TXmlRegistry(FSysData).SetRootKey(S);
  184. fRootKey := Value;
  185. end;
  186. procedure TRegistry.CloseKey;
  187. begin
  188. TXMLRegistry(FSysData).Flush;
  189. end;