Home » Tutorials » VCL » Registry

Registry

Schreiben in die Registry

Zuerst ein Stück Beispielcode, das die Top- und Left-Koordinaten eines Fensters in die Registry speichert:

uses Registry;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var regist: TRegistry;
begin
  regist := TRegistry.Create;
  try
    regist.RootKey := HKEY_CURRENT_USER;
    regist.OpenKey('SoftwareMeineFirmaMeinProgramm1.0', true);
    regist.WriteInteger('Left', Form1.Left);
    regist.WriteInteger('Top', Form1.Top);
  finally
    regist.free;
  end;
end;

Nun der Reihe nach:
Es darf nicht vergessen werden, die Unit „Registry“ in die Uses-Klausel aufzunehmen, sonst geht gar nichts.
Als erstes wird nun eine Instanz mit dem Namen „regist“ der Klasse TRegisty gebildet. Statt „regist“ kann natürlich jeder beliebige, gültige Variablenname verwendet werden.
Als Hauptschlüssel (RootKey) wird hier HKEY_CURRENT_USER verwendet. Diese Zuweisung wäre nicht nötig, da dieser Hauptschlüssel standardmäßig verwendet wird, wenn RootKey nichts zugewiesen wird – aber sicher ist sicher.
Nun wird der Schlüssel geöffnet, in den wir unsere Daten schreiben wollen. Der Boolean-Wert (zweiter Parameter von OpenKey) hat folgende Bedeutung: Bei „true“ wird der Schlüssel erzeugt, wenn er noch nicht existiert, bei „false“ nicht.
Mit den Methoden WriteInteger werden die Daten gespeichert. Der erste Wert gibt den Namen an, unter dem der folgende Wert (zweiter Parameter) später wieder abrufbar ist. Bei „WriteInteger“ muss der zu speichernde Wert natürlich eine Ganzzahl sein. Daneben gibt es für andere Datentypen entsprechende Methoden wie „WriteString“, „WriteDateTime“, „WriteFloat“ usw.
Wird der Registry-Zugriff nicht mehr benötigt, sollte er geschlossen werden (regist.free). Damit wird der Speicherplatz der Instanz „regist“ im Arbeitsspeicher wieder freigegeben. Wäre stattdessen ein Zugriff auf einen anderen Schlüssel nötig gewesen, hätte der aktuelle über „CloseKey“ geschlossen werden können.