Delphi-PRAXiS
Seite 2 von 2     12   

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 auslesen unsicher (https://www.delphipraxis.net/5496-registry-auslesen-unsicher.html)

HomerGER 10. Jun 2003 20:09

zb.
Delphi-Quellcode:
Function Wert1_WU() : reg1_r;
var
output_r :reg1_r;
Begin
    output_r.s1 := HKEY_CURRENT_USER;
    output_r.s2 := '\Software\Microsoft\Windows\CurrentVersion\Explorer\CabinetState';
    output_r.s3 := 'Use Search Asst';
    result := output_r;
end;
die var reg1_1
Delphi-Quellcode:
//Type (öffentlich)
type
reg1_r = Record
s1 : HKEY;
s2 : String;
s3 : String;
end;

es jetzt so ca. 100 werte

Christian Seehase 10. Jun 2003 20:26

Moin HomerGER,

irgendwie seh' ich im Moment keinen unmittelbaren Grund, warum das schiefgehen sollte.
Das einzige was mir auffällt:
Du benutzt RegCloseKey auch dann, wenn der Wert von key_hk nicht initialisiert wurde, weil der Aufruf von RegOpenKeyEx schiefgegangen ist.
Zudem stellt try/finally den Resourcenschutzblock dar, der für den Fall, dass RegOpenKeyEx nicht geklappt hat nicht benötigt wird.

Probier mal diese Variante:

Delphi-Quellcode:
Function Reg_Lesen_RYU(input_r : reg1_r) : reg_wert_r;
var
key_hk : HKEY;
begin
        if (RegOpenKeyEx(input_r.s1, PChar(input_r.s2), 0, KEY_READ, key_hk) = ERROR_SUCCESS) then
        begin
          try
            Result.s1 := 'offen';
            Result.s2 := '';
          finally
            RegCloseKey(key_hk);
          end;
        end
        else
        begin
            Result.s1 := 'zu';
            Result.s2 := '';
        end;
end;

HomerGER 10. Jun 2003 20:52

das gleich
aber christian
ich bekomme für die meisten doch kein ERROR_SUCCESS
also spring er doch da nicht rein?

mit der function schreib ich die ganzen werte in eine ini
sobald mein programm gestartet wird
wie du gesagt hast ist ja die Tregistry von api abgeleite

mit der Tregistry klappt es ja
als sollten die Pathangabe passen
in der Version mit TRegistry liest er alle werte richtig aus

die ersten 6 werte sind von Root Curent_User (Kein gelesen)
dann komm einer mit Local_Maschine den liest er und den nächsten von
current_user auch noch, aber ab da wieder nicht

Christian Seehase 10. Jun 2003 20:58

Moin HomerGER,

wieso das mit TRegistry klappt und mit der API Funktion versteh' ich nicht.

Wie schon gesagt:
Erst wenn Du ERROR_SUCCESS erhältst, hast Du einen Key göffnet, und nur in diesem Falle mach RegCloseKey Sinn.
Deshalb hab' ich den try/finally Block anders gelegt.
Das try kommt erst, nachdem eine Resource belegt wurde.

HomerGER 10. Jun 2003 21:19

schade
aber werde aber versuchen es doch noch mit der API hin zubekommen
wenn du noch ne Iddee melde dich doch bitte


ps. und danke für deine hilfe und mühe

Christian Seehase 10. Jun 2003 23:22

Moin HomerGER,

hast Du Dir mal die Kompo runtergeladen und angesehen?

HomerGER 11. Jun 2003 00:35

nein - hab kein download gefunden :(

Christian Seehase 11. Jun 2003 12:57

Liste der Anhänge anzeigen (Anzahl: 1)
Moin HomerGER,

ich hab's Dir hier mal angehängt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.
Seite 2 von 2     12   

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