![]() |
AW: Registry lesen
Zitat:
Sherlock |
AW: Registry lesen
Hallo,
ich habe das dargestellte Beispiellisting probiert und es gab keine Fehlermeldung. Vielen Dank an alle Beteiligten. Damit ist das Thema erledigt. Gruß Olmann |
AW: Registry lesen
Hmm..
Zitat:
Delphi-Quellcode:
if reg.OpenKey('Software\Windaxlg',False) then begin
Bei Verwendung von false wird dann von OpenKey auch ein false zurück geliefert wenn dein Verzeichnis noch nicht da ist, statt ein neues (leeres) 'Windaxlg' anzulegen... Das 'True' sollte nur zum 'schreiben' verwendet werden ... ;) Beim 'Lesen' wird so nicht versucht Werte aus einem leeren Verzeichnis zu lesen.. |
AW: Registry lesen
Beim Programmende wird der Zweig sowieso angelegt, da kommt es auf ein paar Minuten früher nicht an.
Und für die anderen Werte muss ja auch was geliefert werden. Man könnte das Ganze natürlich auch so machen:
Delphi-Quellcode:
Verschiebt das Erstellen der Verzeichnisses eben auf's Programmende und man hat beim Programmstart ein paar mehr Zeilen Code, um auf die Nichtexistenz des Verzeichnisses und die damit verbundene Vergabe der Defaultwerte zu reagieren.
procedure Registry_lesen;
var reg : TRegistry; begin reg := TRegistry.Create; try reg.Rootkey := HKEY_CURRENT_USER; if reg.OpenKey('Software\Windaxlg',False) then begin if reg.ValueExists('Win1') then test.str_1 := reg.ReadString('Win1') else test.str_1 := ''; if reg.ValueExists('Win2') then test.str_2 := reg.ReadString('Win2') else test.str_2 := ''; if reg.ValueExists('Win3') then aufrufe := reg.ReadInteger('Win3') else aufrufe := 0; if reg.ValueExists('Win4') then test.Tage := reg.ReadInteger('Win4') else test.Tage := 0; if reg.ValueExists('Win4') then test.str_4 := reg.ReadString('Win4') else test.str_4 := ''; end else begin test.str_1 := ''; test.str_2 := ''; aufrufe := 0; test.Tage := 0; test.str_4 := ''; end; finally reg.Free; end; end; Oder so ginge auch:
Delphi-Quellcode:
Hat wer weiter Varianten zu bieten ;-)
procedure Registry_lesen;
var reg : TRegistry; begin test.str_1 := ''; test.str_2 := ''; aufrufe := 0; test.Tage := 0; test.str_4 := ''; reg := TRegistry.Create; try reg.Rootkey := HKEY_CURRENT_USER; if reg.OpenKey('Software\Windaxlg',False) then begin if reg.ValueExists('Win1') then test.str_1 := reg.ReadString('Win1'); if reg.ValueExists('Win2') then test.str_2 := reg.ReadString('Win2'); if reg.ValueExists('Win3') then aufrufe := reg.ReadInteger('Win3'); if reg.ValueExists('Win4') then test.Tage := reg.ReadInteger('Win4'); if reg.ValueExists('Win4') then test.str_4 := reg.ReadString('Win4'); end; finally reg.Free; end; end; Letztlich jedet ja nur dadrum, beim ersten Programm die Fehler beim Nochnichtvorhandensein der Werte abzufangen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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