![]() |
Registryproblem
Hier wird gezeigt wie man einen DWORD-Wert in die Registry schreibt:
![]() Nur leider bekomme ich das nicht hin. SO habe ich es versucht:
Delphi-Quellcode:
Klappt aber nicht :wall:
with TRegistry.Create do
begin try Rootkey:=HKEY_LOCAL_MACHINE; //Hauptschlüssel if OpenKey('SYSTEM\CurrentControlSet\Control\' + 'Session Manager\Memory\Management\PrefetchParameters', True) then //Unterschlüssel öffnen begin WriteBinaryData('ValueABC', 'Wert-X', SizeOf(dword)); // Beispielwerte end; finally Free; end; end; |
Re: Registryproblem
Zitat:
|
Re: Registryproblem
Zitat:
Für andere Registryarbeiten benutzt man ja auch nicht immer eine |
Re: Registryproblem
Sollte 'Wert-X' nicht ein Integerwert sein?
|
Re: Registryproblem
Auch dann kommt die von mir oben geschriebene Meldung.
|
Re: Registryproblem
Hast du denn Schreibrechte auf den HKLM-Zeig? Wie sieht die 'WriteBinaryData'-Zeile bei dir aus wenn du sie nicht mit Beispielwerten gefüllt hast?
|
Re: Registryproblem
Delphi-Quellcode:
WriteBinaryData('Value-Name-Halt', '1', SizeOf(dword)); // Beispielwerte
|
Re: Registryproblem
Da ist der Fehler doch schon. Müsste das nicht
Delphi-Quellcode:
heissen?
WriteBinaryData('Value-Name-Halt', 1, SizeOf(dword)); // Beispielwerte
|
Re: Registryproblem
Oben habe ich geschrieben, dass ich dann den selben Fehler bekomme :(
|
Re: Registryproblem
Angenommen ich verwende diese funktionen:
![]() Wie sähe der Aufruf aus? Ich kann es mir denken, aber ich möchte mich nochmal absichern Edit:
Delphi-Quellcode:
So evtl?
//Button
ReadDWORD('HierDerGanzLaaaangeSchlüssel', 'Value-Name'); |
Re: Registryproblem
Dann mach doch das, was verlangt ist (kein Konstantenobjekt übergeben):
Delphi-Quellcode:
Edit: Du fragst so oft, wie man eine Funktion aufrufst, das solltest du doch langsam können (und sag jetzt nicht, dass du es so gemacht hättest, sondern schreibe nächstes Mal dazu, wie du denkst, würde man das aufrufen. Ich habe immer noch den Eindruck, dir fehlen sämtliche Grundlagen).
var
WertX: Integer; WertX := 1; WriteBinaryData('Value-Name-Halt', WertX, SizeOf(dword));
Delphi-Quellcode:
Edit2: In der Funktion, die du nutzt, fehlt übrigens ein
if WriteDWORD('Key', 'Name', WertX) then
// erfolgreich eingetragen WertX = ReadDWORD('Key', 'Name'); ![]() |
Re: Registryproblem
Zitat:
Wieso sollte ich den nicht gemacht habe, das habe ich aber! Ich hab das so gemacht wie ich es nach meinem bisherigen Wissen machen würde. |
Re: Registryproblem
Funktioniert es nun wenigstens?
|
Re: Registryproblem
Wenn ich deine Prozedur verwende, und will eine 1 als DWORD eintragen, so trägt er
"01 00 00 00" ein. OK; ist ja richtig. Aber eine Andere Prozedur tägt folgendes ein: 0x000000001(1) Die Binärdaten sind identisch. Also kann ich davon ausgehen, dass es das gleiche ist? Mit dem Binärsystem kenne ich mich leider nicht so doll aus Edit: Zitat:
möglich ist. |
Re: Registryproblem
Kann es sein, dass der Schlüssel mit dem Inhalt "01 00 00 00" ein REG_BINARY ist und der mit "0x000000001(1)" ein REG_DWORD?
|
Re: Registryproblem
Ups, das sehe ich grade auch. Aber ich dachte diese Prozedur schreibt DWORD's in die Registry und keine Binary's?
|
Re: Registryproblem
Ich habe den Fehler gefunden:
Delphi-Quellcode:
In der Überschrift steht, dass es kein Problem sei damit einen DWORD in die Registry zu schreiben.
Pruefung.WriteBinaryData(Data, Value, SizeOf(dword));
Wieso steht dann da "WriteBinaryData(Data [...]" Da muss doch
Delphi-Quellcode:
hin.
Pruefung.Integer(Data, Value);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 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