Autor |
Beitrag |
nina
      
Beiträge: 62
|
Verfasst: Do 10.04.03 14:59
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
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 10.04.03 15:21
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
      
Beiträge: 76
|
Verfasst: 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
Zuletzt bearbeitet von Inferno am Fr 11.04.03 00:42, insgesamt 1-mal bearbeitet
|
|
nina 
      
Beiträge: 62
|
Verfasst: 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
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 76
|
Verfasst: Fr 11.04.03 00:46
Titel: hi
Sorry hatte bei meinem post oben bei Reg.ReadString und Reg.WriteString das "string" vergessen.
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.
tschü
|
|
nina 
      
Beiträge: 62
|
Verfasst: 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 
      
Beiträge: 62
|
Verfasst: Do 17.04.03 09:35
Hallo!
Sorry das ich mich jetzt erst wieder melde, allerdings hatte ich noch keine Zeit zum antworten!
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
Zuletzt bearbeitet von nina am Do 17.04.03 14:13, insgesamt 1-mal bearbeitet
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: 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?  Unter GetValueNames findest du ein Beispiel, da brauchst du nur noch ein paar Zeilen ändern, schon hast du genau was du brauchst.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
nina 
      
Beiträge: 62
|
Verfasst: 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
      
Beiträge: 76
|
Verfasst: 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
bye
|
|
nina 
      
Beiträge: 62
|
Verfasst: Do 17.04.03 15:23
Hallo Inferno!
Ich habe Dir so eben meine e-mail adresse zugeschickt!!!
Danke!!!
nina 
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: 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
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
nina 
      
Beiträge: 62
|
Verfasst: 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 
|
|
Inferno
      
Beiträge: 76
|
Verfasst: Mi 23.04.03 15:01
Titel: hi nina
haste die email erhalten?
bye
|
|