source: client/Delphi/UAutoRegistry.pas

Last change on this file was 41, checked in by george, 15 years ago
  • Přidáno: Zdrojové kódy ukázkového programu pro plnění údajů v Delphi.
File size: 4.3 KB
Line 
1unit UAutoRegistry;
2
3interface
4
5uses
6 Windows, Registry;
7
8type
9 TAutoRegistry = class
10 private
11 FItems: array of record
12 Nazev: string;
13 Typ: Integer;
14 Data: Pointer;
15 end;
16 FPath: string;
17 public
18 Update: Boolean;
19 constructor Create(Path: string);
20 procedure SaveToRegistry; // Uloží všechny promìnné do registrù
21 procedure LoadFromRegistry; // Naète promìnné z registrù
22 // Metody vloží do vnitøní tabulky odkaz na zadanou promìnnou, která má být uchována v registrech
23 procedure Include(NovyNazev: string; var NovaData: string; DefaultValue: string); overload;
24 procedure Include(NovyNazev: string; var NovaData: Integer; DefaultValue: Integer); overload;
25 procedure Include(NovyNazev: string; var NovaData: Boolean; DefaultValue: Boolean); overload;
26 procedure Include(NovyNazev: string; var NovaData: Real; DefaultValue: Real); overload;
27 procedure Delete;
28 destructor Destroy; override; // Uloží promìnné a uvolní se
29 end;
30
31implementation
32
33constructor TAutoRegistry.Create(Path: string);
34begin
35 FPath:= Path;
36end;
37
38destructor TAutoRegistry.Destroy;
39//var
40// I: Integer;
41begin
42// for I:= 0 to High(FItems) do FItems[I].Free;
43end;
44
45procedure TAutoRegistry.LoadFromRegistry;
46var
47 I: Integer;
48begin
49 with TRegistry.Create do begin
50 try
51 RootKey := HKEY_CURRENT_USER;
52 if not KeyExists(FPath) then SaveToRegistry;
53 OpenKey(FPath, True);
54 for I:= 0 to High(FItems) do with FItems[I] do begin
55 if Typ=1 then begin
56 if ValueExists(Nazev) and not Update then Integer(Data^):= ReadInteger(Nazev)
57 else WriteInteger(Nazev, Integer(Data^));
58 end else if Typ=3 then begin
59 if ValueExists(Nazev) and not Update then Boolean(Data^):= ReadBool(Nazev)
60 else WriteBool(Nazev,Boolean(Data^));
61 end else if Typ=4 then begin
62 if ValueExists(Nazev) and not Update then Real(Data^):= ReadFloat(Nazev)
63 else WriteFloat(Nazev,Real(Data^));
64 end else if Typ=2 then begin
65 if ValueExists(Nazev) and not Update then string(Data^):= ReadString(Nazev)
66 else WriteString(Nazev,string(Data^));
67 end;
68 end;
69 finally
70 Free;
71 end;
72 end;
73end;
74
75procedure TAutoRegistry.SaveToRegistry;
76var
77 I: Integer;
78begin
79 with TRegistry.Create do begin
80 try
81 RootKey := HKEY_CURRENT_USER;
82 OpenKey(FPath, True);
83 for I:= 0 to High(FItems) do with FItems[I] do begin
84 if Typ=1 then WriteInteger(Nazev,Integer(Data^)) else
85 if Typ=3 then WriteBool(Nazev,Boolean(Data^)) else
86 if Typ=4 then WriteFloat(Nazev,real(Data^)) else
87 if Typ=2 then WriteString(Nazev,string(Data^));
88 end;
89 finally
90 Free;
91 end;
92 end;
93end;
94
95procedure TAutoRegistry.Include(NovyNazev: string; var NovaData: string; DefaultValue: string);
96begin
97 if not Update then NovaData:= DefaultValue;
98 SetLength(FItems,Length(FItems)+1);
99 with FItems[High(FItems)] do begin
100 Nazev:= NovyNazev;
101 Data:= Pointer(@NovaData);
102 Typ:= 2;
103 end;
104end;
105
106procedure TAutoRegistry.Include(NovyNazev: string; var NovaData: Integer; DefaultValue: Integer);
107begin
108 if not Update then NovaData:= DefaultValue;
109 SetLength(FItems,Length(FItems)+1);
110 with FItems[High(FItems)] do begin
111 Nazev:= NovyNazev;
112 Data:= Pointer(@NovaData);
113 Typ:= 1;
114 end;
115end;
116
117procedure TAutoRegistry.Include(NovyNazev: string; var NovaData: Boolean; DefaultValue: Boolean);
118begin
119 if not Update then NovaData:= DefaultValue;
120 SetLength(FItems,Length(FItems)+1);
121 with FItems[High(FItems)] do begin
122 Nazev:= NovyNazev;
123 Data:= Pointer(@NovaData);
124 Typ:= 3;
125 end;
126end;
127
128procedure TAutoRegistry.Include(NovyNazev: string; var NovaData: Real; DefaultValue: Real);
129begin
130 if not Update then NovaData:= DefaultValue;
131 SetLength(FItems,Length(FItems)+1);
132 with FItems[High(FItems)] do begin
133 Nazev:= NovyNazev;
134 Data:= Pointer(@NovaData);
135 Typ:= 4;
136 end;
137end;
138
139procedure TAutoRegistry.Delete;
140begin
141 with TRegistry.Create do begin
142 try
143 RootKey := HKEY_CURRENT_USER;
144 DeleteKey(FPath);
145 finally
146 Free;
147 end;
148 end;
149 SetLength(FItems,0);
150 //LoadFromRegistry;
151end;
152
153end.
Note: See TracBrowser for help on using the repository browser.