Förord
I denna artikel tänkte jag beskriva hur du kan använda Windowsregistret för att
lagra värden i. Jag kommer att visa ett par exempel för att skriva och lagra värden
samt att läsa in samma värden från registret till ditt Delphiprogram.
Windowsregistret - en bakgrund
Microsoft implementerade registret i samband med att de lanserade Windows 95.
Tidigare var det vanligt att man använde textfiler för att lagra information och inställningar
i, s k ini-filer. I takt med allt större och mer komplexa operativsystem så bestämde
sig Microsoft att lagra alla system och program inställningar i en enda stor databas,
Registret, för det är det registret är: en stor databas. Det enklaste sättet att visa
innehållet i registret är att köra programmet Regedit som du hittar i Windows-mappen
(eller skriv in Regedit under Kör i Startmenyn). Nu visas två fönster. I det
vänstra fönstret finner du de sex huvudnycklarna, representerade som mappar:
-
HKEY_CLASSES_ROOT
-
HKEY_CURRENT_USER
-
HKEY_LOCAL_MACHINE
-
HKEY_USERS
-
HKEY_CURRENT_CONFIG
-
HKEY_DYN_DATA
Dessa mappar kallar vi för root keys. Under varje root key finner vi
en ansenlig mängd undermappar som vi kallar för sub keys. I vårt Delphiprogram
kommer vi att använda oss av HKEY_LOCAL_MACHINE för att lagra våra värden. Under varje sub
key finns det an rad med registernycklar. Det är i dessa som alla värden lagras.
Varje nyckel har ett namn och ett värde. Varje nyckel kan innehålla ett eller flera
lagrade värden.
Skapa och förbered ett formulär
Begär ett nytt projekt och infoga ett textruta och ge den namnet txtName. Infoga
därefter två kommandoknappar och döp dem till btnWrite och btnRead. Namnge deras respektive
Caption-egenskap förslagsvis till Skriv till registret respektive Läs från
registret.
Förbered komponenten TRegistry
Den finns två komponenter i Delphi 6 som kan användas för registerhantering; TRegistry och TRegIni.
I denna artikel kommer vi att använda oss av TRegistry. Den första åtgärd som
vi skall vidta är att implementera ordet Registry i Uses sektionen i
editorn. När detta är gjort skapar vi en instans ett objekt för klassen TRegistry under Private
Declarations. Namnge detta objekt till myReg. När det är klart kommer det
att se ut så här.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, StdCtrls;
type
TForm1 = class(TForm)
btnWrite: TButton;
txtName: TEdit;
btnRead: TButton;
procedure btnWriteClick(Sender: TObject);
procedure btnReadClick(Sender: TObject);
private
{ Private declarations }
myReg:TRegistry;
public
{ Public declarations }
end; |
Om ditt projekt består av flera formulär kan det vara mer praktiskt
att lägga deklarationen under Public Declarations.
Lagra värden i registret
Nästa steg är att skriva in några värden till registret.
Dubbelklicka på knappen btnWrite. Delphi skriver ut ett skelett i editorn.
Skriv in följande kod så att helheten för kommandoknappen btnWrite ser ut så
här:
procedure TForm1.btnWriteClick(Sender: TObject);
begin
try
myReg := TRegistry.Create;
myReg.RootKey := HKEY_LOCAL_MACHINE;
if myReg.OpenKey('SOFTWARE\minApp\', TRUE) then
begin
myReg.WriteString('Mitt Namn', txtName.Text);
myReg.WriteInteger('Top', Form1.Top);
myReg.WriteInteger('Left', Form1.Left);
end;
finally
myReg.Free;
end;
end; |