![]() |
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:
Ich glaub das klappt so nicht.
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; 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: |
Re: Registry-Anfänger-Probleme
Auf jeden Fall woanders. Unter NT-Systemen gibt es Sicherheitsaspekte - also in HKCU und dann immer unter Software.
Code:
...:cat:...
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; |
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: |
Re: Registry-Anfänger-Probleme
Moin Florian,
noch eine kleine Ergänzung:
Code:
true als zweiten Parameter, da der Key sonst nicht angelegt wird.
if regist.OpenKey('Software\flomei\pumpensteuerung\1.0',[color=red]true[/color]) then
Ansonsten geh' doch mal im Einzelschritt durch die Routine, damit Du siehst, ob die Write Zeilen überhaupt erreicht werden. |
Re: Registry-Anfänger-Probleme
Zitat:
...:cat:... |
Re: Registry-Anfänger-Probleme
Ist nicht so schlimm, als Ersatz hast Du dafür doch ein CloseKey zu viel :wink:
|
Re: Registry-Anfänger-Probleme
Zitat:
...:cat:... |
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. |
Re: Registry-Anfänger-Probleme
Zitat:
Delphi-Quellcode:
Borland empfiehlt von der Nutzung von Assigned abzusehen, sofern möglich, da dieser Aufruf um weites langsamer ist als ein direkter Vergleich mit nil.
if regist <> nil then
try ...:cat:... |
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 21: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