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
Antwort Antwort
Seite 1 von 3  1 23      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 10:39
Hallo,

ich habe eine Programm geschrieben, in dem häufig auf die Registry zugegriffen wird. Leider muss ich das irgendwann eines Tages auch mal warten. Und da die Werte (Schlüsseleinträge) immer mehr wurden und noch werden, dachte ich mir das ganze in ein Object zu kapseln. So könnte ich dann sehr komfortabel einfach auf die Eigenschaften dieses Objects zugreifen und müsste nicht immer umständlich mit TRegistry arbeiten.

Den allerersten Anfang habe ich gemacht. Nur leider funktioniert das Schreiben des Wertes nicht. Denn Quellcode habe ich mal angefügt.

Kann mir jemand sagen, warum es nicht geht und wie ich es hinbekomme?

Gruß und Dank, Alex
Angehängte Dateien
Dateityp: zip mein_object_p_144.zip (1,9 KB, 7x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 10:44
Bitte poste doch den relevanten Quellcode. Ich denke, die wenigsten haben Lust erst ein Archiv runterzuladen, es zu entpacken und dann noch einen Editor zum Betrachten deines Quellcodes zu öffnen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 11:03
Hallo,

ausgehend vom Quelltext ist für mich nicht erkennbar, warum das Schreiben nicht funktionieren sollte.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 11:07
Zitat von Luckie:
Was willst du noch einfacher machen?
Ich möchte das hier
Delphi-Quellcode:
Function Holewert: String;
Var
   RINI         : TRegistry;
Begin
   Result:='';
   RINI:=TRegistry.Create;
   Try
      RINI.RootKey:=HKEY_CURRENT_USER;
      If RINI.OpenKeyReadOnly('Irgendwas') Then
      Begin
         Result:=RINI.ReadString('Irgendwas');
         RINI.CloseKey;
      End;
   Finally
      RINI.Free;
   End;
End;
für jede einzelne Abfrage der Registry vermeiden. Es kommt hinzu, dass ich häufig zwischen den RootKeys HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE wechseln muss. Es soll daher mindestens das Anlegen von RINI und das Freigeben nicht jedesmal gemacht werden müssen.

Zitat von Luckie:
Und bitte poste doch den relevanten Quellcode.
Hier kommt er:
Delphi-Quellcode:
Unit AdvoPlex_Object;

Interface

Uses
   Windows,
   Classes,
   Registry;

Const
   {$EXTERNALSYM HKEY_CURRENT_USER}
   HKEY_CURRENT_USER   = ($80000001);
   {$EXTERNALSYM HKEY_LOCAL_MACHINE}
   HKEY_LOCAL_MACHINE= ($80000002);
   AdvoPfad            ='Software\AdvoSolutions\AdvoPlex';

Type
   TAdvoPlex   = Class(TComponent)
                     Private
                        RINI         : TRegistry;
                        FUserSU      : String;
                     Protected
                        Function GetUser: String;
                        Function GetUserSU: String;
                        Procedure SetUserSU(Value: String);
                     Public
                        Constructor Create(AOwner:Tcomponent);Override;
                        Destructor Destroy; Override;
                     Published
                        Property   User      : String   Read   GetUser;
                        Property UserSU   : String   Read   GetUserSU   Write SetUserSU;
                 End;

Implementation

Constructor TAdvoPlex.Create(AOwner: TComponent);
Begin
   Inherited Create(AOwner);
   RINI:=TRegistry.Create;
End;

Destructor TAdvoPlex.Destroy;
Begin
   RINI.Free;
   Inherited Destroy;
End;

Function TAdvoPlex.GetUser;
   Function WhoAmI: String;
   Var
      Buffer      : Array [0..MAX_PATH] Of Char;
      Size         : DWORD;
   Begin
      Size:=SizeOf(Buffer);
      GetUserName(Buffer,Size);
      SetString(Result,Buffer,lstrlen(Buffer));
   End;
Begin
   Result:=WhoAmI;
End;

Function TAdvoPlex.GetUserSU;
Begin
   RINI.RootKey:=HKEY_CURRENT_USER;
   If RINI.OpenKeyReadOnly(AdvoPfad) Then
   Begin
      Result:=RINI.ReadString('User');
      RINI.CloseKey;
   End;
End;

Procedure TAdvoPlex.SetUserSU(Value: string);
Begin
   RINI.RootKey:=HKEY_CURRENT_USER;
   If RINI.OpenKey(AdvoPfad, True) Then
   Begin
      RINI.WriteString('User', Value);
      RINI.CloseKey;
   End;
End;

End.
Zitat von Luckie:
Ich denke, die wenigsten haben Lust erst ein Archiv runterzuladen, es zu entpacken und dann noch einen Editor zum Betrachten deines Quellcodes zu öffnen.
Dann wird es aber vermutlich auch schwieriger, den Fehler zu finden.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 11:09
Zitat von nahpets:
Hallo,
ausgehend vom Quelltext ist für mich nicht erkennbar, warum das Schreiben nicht funktionieren sollte.
Eben.
Ich verstehe es ja auch nicht Ich bekomme immer die Meldung: "Im Projekt ist eine Exception der Klasse ERegistryException mit der Meldung 'Fehler beim Setzen der Daten für 'User'' aufgetreten.

Achso: Ich habe TurboDelphi 2006.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 11:13
Das was du als Datei angehangen hast, ist auch nicht mher, als das was du jetzt gepostet hast. Warum sollte man den Fehler also besser finden?

Hast du deinen Code schon mal debuggt? Wie benutzt du die Klasse?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 11:22
Hallo @Schwedenbitter,

mit Deinem unveränderten Quelltext (D7 Prof.) tritt der Fehler nicht auf. Der Eintrag wird in die Registrierung geschrieben.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 13:59
Zitat von nahpets:
mit Deinem unveränderten Quelltext (D7 Prof.) tritt der Fehler nicht auf. Der Eintrag wird in die Registrierung geschrieben.
Danke fürs Testen. Auf einem Rechner habe ich noch ein in die Jahre gekommenes Delphi 6. Dort kommt der Fehler leider auch.

@nahpets
Könntest Du mir bitte mal einen Gefallen tun? Ich gehe davon aus, dass D7 Prof beim Öffnen und/oder Schließen eine .cfg-Datei schreibt. Ich vermute anhand des Erfolges bei Dir, dass es evtl. an irgend welchen Compiler-Einstellungen liegen könnte.
Kann ich bitte mal die .cfg-Datei (ggf. auch als PM) bekommen, mit der Du das kompiliert hast?

Ich suche insofern auch mal BETA-Tester , denen ich das mal als exe zukommen lassen könnte, um auszuschließen, dass es an meinem/meinen System(en) liegt. Ich weiß nicht, ob die Forenregeln das Anhängen von exe-Dateien zulassen und bin zu beschäftigt, um das auf die Schnelle nachzusehen.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

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

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 14:05
Also Du könntest Dir einiges an Code sparen, wenn Du eine globale Variable von Typ TRegistry nutzt, die Du beim Programmstart initialisierst und beim Programmende wieder auflöst. So mache ich das zumindest in meinen Projekten. Alternativ könntest Du auch die JclRegistry Unit aus den Jedis nutzen
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
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Kapseln von Registryzugriffen

  Alt 21. Sep 2009, 14:06
Hallo,

anliegend das ganze Projekt mit Exe zum Probieren.

Geändert von nahpets (21. Nov 2017 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 22:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz