tregistry2.pp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. {$ifdef FPC} {$mode delphi} {$endif}
  2. unit tregistry2;
  3. interface
  4. procedure DoRegTest2;
  5. implementation
  6. uses Windows, SysUtils, Classes, registry;
  7. const
  8. STestRegPath = 'Software\FPC-RegTest';
  9. procedure TestFailed(ErrCode: integer);
  10. begin
  11. raise Exception.Create('Test FAILED. Error code: ' + IntToStr(ErrCode));
  12. end;
  13. procedure ClearReg;
  14. begin
  15. with TRegistry.Create do
  16. try
  17. DeleteKey(STestRegPath + '\1');
  18. DeleteKey(STestRegPath);
  19. finally
  20. Free;
  21. end;
  22. end;
  23. procedure DoRegTest2;
  24. var
  25. reg: TRegistry;
  26. ri: TRegIniFile;
  27. rini: TRegistryIniFile;
  28. sl: TStringList;
  29. begin
  30. ClearReg;
  31. reg:=TRegistry.Create;
  32. try
  33. if not reg.OpenKey(STestRegPath, True) then
  34. TestFailed(1);
  35. if reg.CurrentPath <> STestRegPath then
  36. TestFailed(2);
  37. reg.WriteString('Item1', '1');
  38. if not reg.OpenKey('\' + STestRegPath + '\1', True) then
  39. TestFailed(3);
  40. reg.WriteString('Item2', '2');
  41. if reg.CurrentPath <> STestRegPath + '\1' then
  42. TestFailed(5);
  43. reg.CloseKey;
  44. if reg.CurrentPath <> '' then
  45. TestFailed(6);
  46. ri:=TRegIniFile.Create(STestRegPath);
  47. with ri do
  48. try
  49. if ReadString('', 'Item1', '') <> '1' then
  50. TestFailed(10);
  51. if ReadString('1', 'Item2', '') <> '2' then
  52. TestFailed(11);
  53. if ReadString('', 'Item1', '') <> '1' then
  54. TestFailed(12);
  55. if not ValueExists('Item1') then
  56. TestFailed(13);
  57. WriteInteger('1', 'Item3', 3);
  58. sl:=TStringList.Create;
  59. try
  60. ReadSectionValues('1', sl);
  61. if sl.Count <> 2 then
  62. TestFailed(14);
  63. if sl.Values['Item2'] <> '2' then
  64. TestFailed(15);
  65. if sl.Values['Item3'] <> '3' then
  66. TestFailed(16);
  67. finally
  68. sl.Free;
  69. end;
  70. WriteInteger('', 'Item4', 4);
  71. if GetDataType('Item4') <> rdString then
  72. TestFailed(17);
  73. finally
  74. Free;
  75. end;
  76. rini:=TRegistryIniFile.Create(STestRegPath);
  77. with rini do
  78. try
  79. if ReadString('', 'Item1', '') <> '1' then
  80. TestFailed(20);
  81. if ReadString('1', 'Item2', '') <> '2' then
  82. TestFailed(21);
  83. if ReadString('', 'Item1', '') <> '1' then
  84. TestFailed(22);
  85. if not ValueExists('', 'Item4') then
  86. TestFailed(23);
  87. if not ValueExists('1', 'Item2') then
  88. TestFailed(24);
  89. finally
  90. Free;
  91. end;
  92. finally
  93. reg.Free;
  94. ClearReg;
  95. end;
  96. end;
  97. end.