Entwickler-Ecke
Sonstiges (Delphi) - Schlüssel in der Registry löschen
nina - Do 10.04.03 14:59
Titel: Schlüssel in der Registry löschen
Hallo!
Ich möchte würde gerne einen 'Unterschlüssel' in der Registry löschen! Ich habe es auch schon mit diesem Code versucht, allerdings löscht er mir dann den ganzen Schlüssel!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Reg := TRegistry.Create; //Create = Im Speicher ist Platz reserviert/ erzeugt Speicherplatz für die jeweilige Variable try Val := TStringList.Create; //Create = Im Speicher ist Platz reserviert/ erzeugt Speicherplatz für die jeweilige Variable try Reg.RootKey := HKEY_USERs; // Abschnitt in Registrierung if not Reg.OpenKey('Pfad des Schlüssels aus der Registry',False) then ShowMessage('Fehler beim Öffnen des Schlüssels') else begin if MessageDlg('Wollen Sie die Einträge wirklich löschen?',mtInformation,[mbYes, mbNo], 0) = mrYes then begin Reg.GetValueNames(Val); // Speichert die Namen in die TStringList Val Reg.DeleteKey('Pfad des Schlüssels aus der Registry'); entries.Checked := False; //Hacken werden nach dem löschen nicht mehr angezeigt end; end;//Reg.OpenKey finally Val.Free; // Setzt nach dem Löschen den Speicher wieder frei end;//Val.Free finally Reg.Free; // Setzt nach dem Löschen den Speicher wieder frei end;//Reg.Free |
Ich allerdings möchte nur den Eintrag in dem Schlüssel löschen!
Weiss jemand wie das funktioniert!
Ich hätte da noch eine Frage, kann ich den Inhalt eines Schlüssels auch irgendwie ändern, z.B. von No auf Yes und umgekehrt?
nina
Delete - Do 10.04.03 15:21
Titel: Re: Schlüssel in der Registry löschen
nina hat folgendes geschrieben: |
[...] allerdings löscht er mir dann den ganzen Schlüssel! |
Wundert mich nicht:
Zitat: |
Quelltext 1: 2: 3:
| { ... } Reg.DeleteKey('Pfad des Schlüssels aus der Registry'); { ...} | |
Zitat: |
Ich allerdings möchte nur den Eintrag in dem Schlüssel löschen!
Weiss jemand wie das funktioniert! |
Ja, o.g. Zeile weglassen.
Zitat: |
Ich hätte da noch eine Frage, kann ich den Inhalt eines Schlüssels auch irgendwie ändern, z.B. von No auf Yes und umgekehrt? |
Vielleicht solltest du dir erst mal darüber klar werden (und uns deutlich machen) ob du mit
Zitat: |
Inhalt eines Schlüssels |
einen untergeordneten Eintrag, einen untergeordneten Schlüssel oder vielleicht den so genannten
Standardwert des Schlüssels meinst. Es geht sicher, aber falls du einen Schlüssel umbenennen willst, dann nur mit einem kleinen Umweg.
Grüße.
Inferno - Do 10.04.03 15:26
Titel: Hi nina
ich weiß jetzt zwar ned genau wie du das meinst mit den schlüssels löschen aber werte schreibt und liest man mit:
ich verwende hier Schlüssel für die Datensätze innerhalb eines Schlüssel und die Werte der Datensätze sind die Values. ich weiß ned so recht wie ich das beschreiben soll :)
Quelltext
1: 2:
| ShowMessage(Reg.ReadString('Schlüsselname')); // Gibt Value des Schlüssels "Testschlüssel" wieder Reg.WriteString('Testschlüssel', 'neuer wert'); // trägt "neuer wert" als Value für den Schlüssel "Testschlüssel" ein und ich glaube falls der ned existiert wird er angelegt |
naja die delphi hilfe is da eingentlich ganz hilfreich.
na dann bye
nina - Do 10.04.03 15:27
Mit Inhalt eines Schlüssels meine ich den untergeordneten Eintrag z.B im Schlüssel AutoComplete befindet sich der Eintrag no Auto... Wert no! Und diesen Wert no möchte ich auf yes umwandeln!
Danke schon mal für die erste Hilfe!
nina
Delete - Do 10.04.03 21:22
Dann wäre es in dem Fall "WriteString". Damit kannst du nicht nur neue Einträge anlegen, du kannst vorhandenen Einträgen auch neue Werte zuweisen, etwa
Quelltext
1:
| reg.WriteString('no Auto','yes'); |
Vorher Schlüssel öffnen, natürlich.
Aber schau mal in die Hilfe von Delphi, wie Inferno vorschlug. Da müssten auch passende Quellcode-Beispiele drin sein.
Inferno - Fr 11.04.03 00:46
Titel: hi
Sorry hatte bei meinem post oben bei Reg.ReadString und Reg.WriteString das "string" vergessen. :shock:
Es gibt davon noch viele andere möglichkeiten:
Quelltext
1: 2: 3: 4:
| Reg.ReadBool(...); Reg.ReadCurrency(...); Reg.ReadInteger(...); ... |
natürlich alles auch mit "Reg.Write..."
aber das steht glaube ich alles in der hilfe. :lol:
tschü
nina - Fr 11.04.03 07:46
Hallo!
Schon mal danke für Eure schnelle Hilfe!
Ich werde mich gleich mal ran machen und mich wieder melden wenn es nicht klappen sollte!
nina
nina - Do 17.04.03 09:35
Titel: Re: Schlüssel in der Registry löschen
Hallo!
Sorry das ich mich jetzt erst wieder melde, allerdings hatte ich noch keine Zeit zum antworten! :oops: :oops:
Zitat: |
Quelltext 1: 2: 3:
| { ... } Reg.DeleteKey('Pfad des Schlüssels aus der Registry'); { ...} | |
Zitat: |
Ich allerdings möchte nur den Eintrag in dem Schlüssel löschen!
Weiss jemand wie das funktioniert! |
Zitat: |
Ja, o.g. Zeile weglassen.
|
Wenn ich aber die Funktion oben weglasse, dann löscht er doch gar nichts oder seh ich das falsch?
Vielleicht hab ich mich auch etwas undeutlich ausgedrückt! Ich möchte ja schon den Schlüssel löschen, allerdings nur dem sein Inhalt, also nicht den ganzen Ordner!
Oder muss ich anstelle von o.g. Code einen anderen nehmen?
In der Hilfe hab ich auch schon nachgesehen allerdings hat das auch nicht so funktioniert!
Danke!
nina
LCS - Do 17.04.03 10:56
Hi
wenn du einen Wert aus einem Schlüssel löschen willst dann verwendest du
Quelltext
1:
| Reg.DeleteValue(WertName); |
Wenn du also alle Werte eines Schlüssel löschen willst, dann must du Schlüssel öffnen, alle Werte holen (GetValueNames) und anschliessend in einer Schleife diese Werte löschen.
Zitat: |
In der Hilfe hab ich auch schon nachgesehen allerdings hat das auch nicht so funktioniert!
|
Wo hast du denn da nachgeschaut? :mrgreen: Unter GetValueNames findest du ein Beispiel, da brauchst du nur noch ein paar Zeilen ändern, schon hast du genau was du brauchst.
Gruss Lothar
wulfskin - Do 17.04.03 13:53
...oder du löscht den Schlüssel sammt Inhalt und erstellst nur den SChlüssel wieder. So wird es wohl schneller gehen ;)!
Gruß wulfskin!
nina - Do 17.04.03 14:26
Hi!
Genau den gleichen Code habe ich auch in der Hilfe gefunden uns ausprobiert, aber wie schon gesagt, er hat nicht funktioniert. Somit habe ich dann aus dem Reg.DeleteKey, Reg.DeleteValue gemacht. Allerdings löscht er mir diesen unterschlüssel ebenfalls nicht!
Hier ist der Code aus der Hilfe mit meinen Werten geändert, vielleicht findet ja jemand von Euch den Fehler!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| Reg:=TRegistry.Create; try Val:=TStringList.Create; try Reg.RootKey:=HKey_USERS; // Abschnitt in Registrierung if not Reg.OpenKey('Angegebener Pfad des Schlüssels',True) then ShowMessage('Fehler beim Öffnen des Schlüssels') else begin Reg.GetValueNames(Val);
for I:=0 to Val.Count-1 do begin ShowMessage(''Angegebener Pfad des Schlüssels' + Chr(13) + 'hat einen Eintrag namens '+Val.Strings[I]+Chr(13)+ 'mit dem Wert '+Reg.ReadString(Val.Strings[I])); end; if MessageDlg('Soll der Schlüssel mit seinen Werten gelöscht werden?' ,Mtinformation,[mbYes,mbNo],0)=mryes then Reg.DeleteValue('Wert des Schlüssels');
end; finally Val.Free; end; finally Reg.Free; end; |
@wulfskin: Ich möchte nicht den ganzen Schlüssel löschen, da sich weitere Unterschlüssel darin befinden!
Nina
Inferno - Do 17.04.03 15:19
Titel: hi nina
ich würde dir gern ein beispielprog schicken wenn du das willst.
musst mir nur deine email adresse sagen :lol:
bye
nina - Do 17.04.03 15:23
Hallo Inferno!
Ich habe Dir so eben meine e-mail adresse zugeschickt!!!
Danke!!!
nina :)
LCS - Fr 18.04.03 09:15
Hallo Nina
wenn das tatsächlich so in deinem Programm drinsteht dann solltest du das ändern:
Quelltext
1: 2: 3:
| if MessageDlg('Soll der Schlüssel mit seinen Werten gelöscht werden?' ,Mtinformation,[mbYes,mbNo],0)=mryes then Reg.DeleteValue(Val[i]); //Hier war der Fehler |
Gruss Lothar
nina - Mi 23.04.03 08:11
Hallo!
Danke schon mal für Eure Hilfe!
Ich werde Eure Ratschläge und Hinweise ausprobieren und mich dann wieder melden!
nina :rofl:
Inferno - Mi 23.04.03 15:01
Titel: hi nina
haste die email erhalten?
bye
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!