Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Registry-Anfänger-Probleme (https://www.delphipraxis.net/6493-registry-anfaenger-probleme.html)

flomei 12. Jul 2003 22:03


Registry-Anfänger-Probleme
 
:hi: @ all!
Hab grade mal versucht Registrierungsschlüssel zu speichern. Ich hab hier in meinem Delphi-Buch so ein bisschen gelesen und wollte das so machen:
Delphi-Quellcode:
procedure TMainForm.SaveSettings(Sender: TObject;
  var Action: TCloseAction);
  begin
    if
      CBxSaveSettings.Checked
    then
      begin
        regist := TRegistry.Create;
        regist.RootKey := HKEY_LOCAL_MACHINE;
        regist.CreateKey('.flomei\pumpensteuerung\1.0');
        regist.WriteInteger('Filled', Counter.Value);
        regist.WriteBool('OnTop an', OnTopChecked);
        regist.WriteBool('SaveSettings an', SaveSettingsChecked);
        regist.CloseKey;
      end
end;
Ich glaub das klappt so nicht.
Wo sind denn da evtl. Fehler? Er schreibt nämlich keinen Eintrag. Oder sollte man das an einen anderen Ort speichern?

Dank im Vorraus!

MfG Florian :hi:

sakura 12. Jul 2003 22:11

Re: Registry-Anfänger-Probleme
 
Auf jeden Fall woanders. Unter NT-Systemen gibt es Sicherheitsaspekte - also in HKCU und dann immer unter Software.

Code:
procedure TMainForm.SaveSettings(Sender: TObject;
  var Action: TCloseAction);
  begin
    if
      CBxSaveSettings.Checked
    then
      begin
        regist := TRegistry.Create;
        [color=#ff0000]try[/color]
          regist.RootKey := [color=#ff0000]HKEY_CURRENT_USER[/color];
          [color=#ff0000]if[/color] regist.[color=#ff0000]OpenKey[/color]('[color=#ff0000]Software\[/color]flomei\pumpensteuerung\1.0') [color=#ff0000]then
          try[/color]
            regist.WriteInteger('Filled', Counter.Value);
            regist.WriteBool('OnTop an', OnTopChecked);
            regist.WriteBool('SaveSettings an', SaveSettingsChecked);
            regist.CloseKey;
          [color=#ff0000]finally
            regist.CloseKey;
          end;
        finally
          regist.Free;
        end;[/color]
      end
end;
...:cat:...

flomei 12. Jul 2003 22:33

Re: Registry-Anfänger-Probleme
 
Geht irgendwie aber trotzdem noch nicht. Ich hab den Code mal so ausprobiert und er schreibt keinen Eintrag. Woran kann das liegen?

MfG Florian :hi:

Christian Seehase 13. Jul 2003 00:55

Re: Registry-Anfänger-Probleme
 
Moin Florian,

noch eine kleine Ergänzung:

Code:
if regist.OpenKey('Software\flomei\pumpensteuerung\1.0',[color=red]true[/color]) then
true als zweiten Parameter, da der Key sonst nicht angelegt wird.

Ansonsten geh' doch mal im Einzelschritt durch die Routine, damit Du siehst, ob die Write Zeilen überhaupt erreicht werden.

sakura 13. Jul 2003 07:46

Re: Registry-Anfänger-Probleme
 
Zitat:

Zitat von Christian Seehase
true als zweiten Parameter, da der Key sonst nicht angelegt wird.

Es war schon zu spät... den habe ich doch glatt vergesssen, sorry. :oops:

...:cat:...

Tom 13. Jul 2003 08:46

Re: Registry-Anfänger-Probleme
 
Ist nicht so schlimm, als Ersatz hast Du dafür doch ein CloseKey zu viel :wink:

sakura 13. Jul 2003 09:39

Re: Registry-Anfänger-Probleme
 
Zitat:

Zitat von Tom
Ist nicht so schlimm, als Ersatz hast Du dafür doch ein CloseKey zu viel :wink:

:wall:

...:cat:...

Gast 13. Jul 2003 09:49

Re: Registry-Anfänger-Probleme
 
Als Ergänzung zu sakuras Version:

-------
if Assigned(regist) then
try
-------

Statt des ersten "try" einfügen. So wird auch nur dann fortgefahren, wenn die Instanz erfolgreich erstellt wird. Logischerwiese sollten solche IFs am Ende immer noch ein ELSE haben, damit eine Fehlermeldung ausgegeben wird.

sakura 13. Jul 2003 10:01

Re: Registry-Anfänger-Probleme
 
Zitat:

Zitat von Assarbad
-------
if Assigned(regist) then
try
-------

Dann aber
Delphi-Quellcode:
if regist <> nil then
try
Borland empfiehlt von der Nutzung von Assigned abzusehen, sofern möglich, da dieser Aufruf um weites langsamer ist als ein direkter Vergleich mit nil.

...:cat:...

Gast 13. Jul 2003 10:05

Re: Registry-Anfänger-Probleme
 
Okay ... das ist logisch. Aber die Cleverlinge bei Borland könnten ja einfach mal den Compiler so umstellen, daß er "Assigned(bla)" zu "bla<>nil" statt einem Funktionsaufruf von Assigned() umwandelt.

Ich persönlich habe früher auch immer "bla<>nil" benutzt, lasse aber davon ab, da "Assigned()" für mich übersichtlicher ist. Aber definitiv hast du recht, denn selbst wenn Assigned eine sehr simple Funktion ist, muß zuerst der Parameter gepusht werden ... selbst wenn er danach ja in EAX steckt ... also nicht nochmal wieder woanders hin muß :D

Also, hast recht ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.
Seite 1 von 2  1 2      

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