![]() |
RegistryKey auf Existenz prüfen funktioniert nicht (Konsole)
Hallo,
ich wollte heute ein wenig für den Informatikunterricht üben, und hab mich mal mit Registry-Einträgen beschäftigt. Seit einigen Stunden google ich quer durchs Netz und finde keine Antwort auf mein Problem: Ich möchte in meiner Konsolenanwendung einen Registry-Schlüssel auf Existenzprüfen, und wenn er nicht existiert, ihn dann anlegen. Ich weiß, dass man ihn auch einfach so anlegen könnte (denn wenn er existiert, wird er ja nicht überschrieben), aber es geht um's Prinzip, da ich das für ein späteres Programm benötige. Leider werden alle Befehle nach der Überprüfung ignoriert :(
Delphi-Quellcode:
Wenn ich das Programm jetzt starte, beendet es sich einfach wieder. Der Sleep-Befehl wird völlig ignoriert. Der Eintrag in der Registry wird auch nicht angelegt. Nehme ich die Überprüfung "if Regist.KeyExists" raus, wird der Key jedoch zumindest angelegt. Also nehme ich mal an, dass das Programm ab der Überprüfung alle Befehle ignoriert.
if Regist.KeyExists('Software\Test\') = true then
begin WriteLn('Eintrag existiert'); sleep(4000); end else try regist.OpenKey('Software\Test\', true); regist.WriteInteger('Test1', c); regist.WriteInteger('Test2', d); finally regist.free; WriteLn('Eintrag angelegt'); sleep(4000); Was habe ich übersehen? Viele Grüße Fabian |
Re: RegistryKey auf Existenz prüfen funktioniert nicht (Kons
Um welchen Hive geht es? Welche Rechte hat das Programm? Warum zeigst du uns nur den halben Code? Denn irgendwo muss ja das Registry-Objekt erstellt werden.
|
Re: RegistryKey auf Existenz prüfen funktioniert nicht (Kons
Es fehlt der Kopf des Codes:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses SysUtils, WinInet, ShellApi, Registry; var a,b: string; c,d: integer; regist: TRegistry; |
Re: RegistryKey auf Existenz prüfen funktioniert nicht (Kons
Es fehlt immer noch der Konstruktor (Create) und das Setzen des Hives (HKLM; HKCU, ...). Und die Frage, welche Rechte dein Programm hat, hast du auch nicht beantwortet. Desweiteren gib die Methode OpenKey einen Wahrheitswert zurück, den man prüfen kann. Der Try--Except-Block ist an dieser Stelle falsch.
|
Re: RegistryKey auf Existenz prüfen funktioniert nicht (Kons
So wie Luckie schon richtig geschrieben hat:
Erst .create dann den Hive setzen - mit Rootkey. und dann den Schlüssel setzen mit Openkey. Wenn du den 2. Parameter auf false setzt dann legt er einen nichtexistenten Schlüssel auch nicht an und der Rückgabewert sagt dir ob's den Schlüssel gibt (denke ich). Oder du fragst hier mit keyexists ab. dann close und free. Dass das Programm alles aber der Überprüfung ignoriert kann ich mir nicht vorstellen. Die If Abfrage sollte es korrekt durchlaufen. Du kannst dir das auch mit dem Debugger von Delphi anschauen. Setze einen Breakpoint mit F5 und Steppe dann mit F7 durch. Überarbeite das mal alles und poste was rauskommt! :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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