AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kapseln von Registryzugriffen

Ein Thema von Schwedenbitter · begonnen am 21. Sep 2009 · letzter Beitrag vom 21. Sep 2009
 
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 15:31
Ich würde das ganz so realisieren:
Delphi-Quellcode:
unit AdvoPlex_Object;

interface

uses
  Windows,
  Classes,
  SysUtils,
  Registry;

const
  ADVOPATH = 'Software\AdvoSolutions\AdvoPlex';

type
  TAdvoPlex = class(TObject)
  private
    FUserSU: string;
    function CurrentUser: string;
    function GetUserSU: string;
    procedure SetUserSU(Value: string);
    procedure SaveUserSU;
    procedure LoadUserSU;
  public
    constructor Create;
    destructor Destroy; override;
  published
    property UserSU: string read GetUserSu write SetUserSU;
  end;

implementation

constructor TAdvoPlex.Create;
var
  reg: TRegistry;
begin
  inherited Create;
  reg := TRegistry.Create(KEY_ALL_ACCESS);
  reg.RootKey := HKEY_CURRENT_USER;
end;

destructor TAdvoPlex.Destroy;
begin
  FreeAndNil(reg);
  inherited Destroy;
end;

function TAdvoPlex.GetUserSU: string;
begin
  LoadUserSU;
  Result := FUserSU;
end;

procedure TAdvoPlex.LoadUserSU;
begin
  if reg.OpenKeyReadOnly(ADVOPATH) then
  begin
    FUserSU := reg.ReadString('User');
    reg.CloseKey;
  end
  else
    raise Exception.CreateFmt('%s'+#13#10+'%s', ['Fehler beim Lesen von UserSU', SysErrorMessage(GetLastError)]);
end;

procedure TAdvoPlex.SaveUserSU;
begin
  if reg.OpenKey(ADVOPATH, True) then
  begin
    reg.WriteString('User', FUserSU);
    reg.CloseKey;
  end
  else
    raise Exception.CreateFmt('%s'+#13#10+'%s', ['Fehler beim Schreiben von UserSU', SysErrorMessage(GetLastError)]);
end;

procedure TAdvoPlex.SetUserSU(Value: string);
begin
  FUserSU := Value;
  SaveUserSU;
end;

function TAdvoPlex.CurrentUser: string;
var
  Buffer : array[0..MAX_PATH] of Char;
  Size : DWORD;
begin
  Size := SizeOf(Buffer);
  GetUserName(Buffer, Size);
  SetString(Result, Buffer, lstrlen(Buffer));
end;

end.
Dadurch ersparst Du Dir zumindest das ständige Anlegen und Löschen der Registry-Instanzen.

Edit: Warum rufst Du LoadUserSU und SaveUserSU von Hand und nicht in SetUserSU und GetUserSU auf?
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz