Home » Tipps & Tricks » Object Pascal » Variablen » Aufzählungstypen speichern

Aufzählungstypen speichern

Wie in der Onlinehilfe von Delphi nachzulesen ist, handelt es sich bei Aufzählungstypen um eine Menge von Werten mit eindeutiger Reihenfolge. Als Beispiel der Typ der Eigenschaft WindowState eines jeden Formulars:

type
 TWindowState = (wsNormal, wsMinimized, wsMaximized);

Möchte man nun eine Variable von diesem Typ speichern, speichert man nicht wsNormal oder wsMinimized, sondern seine ordinale Entsprechnung. Der Ordinalwert gibt quasi den Index oder die Position eines Wertes in der Menge wieder. Dies geschieht entweder über einen Typecast zu Integer oder mithilfe der Funktion Ord. Folgendes Beispiel zeigt, wie man die Eigenschaft WindowState eines Formulars in einer Ini-Datei speichert:

uses
  IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.ini');
  try
    Ini.WriteInteger('Default', 'WindowState', Ord(WindowState));
  finally
    Ini.Free;
  end;
end;

Der Ladevorgang sieht ähnlich aus, nur dass dann zum entsprechenden Typ zurückgecastet werden muss:

procedure TForm1.Button2Click(Sender: TObject);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.ini');
  try
    WindowState := TWindowState(Ini.ReadInteger('Default', 'WindowState', 0));
  finally
    Ini.Free;
  end;
end;