| Zitat: |
| Der ADD Button (Der ADD Button funzt wunderbar) |
Ja, allerdings ist der Code alles andere als effizient. Zum einen verstehe ich nicht, warum du die Listbox rückwärts durchgehst, wenn du ja doch alles speicherst. Zum anderen öffnest und schließt du die Registry bei
jedem Schleifendurchlauf, obwohl das nicht nötig wäre, und das Schließen des Schlüssels vermisse ich ganz. - Wie wäre dies:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| begin if(Listbox1.Items.Count < 9) then begin Listbox1.Items.Add(Edit3.Text);
reg := TRegistry.Create; with reg do try RootKey := HKEY_CURRENT_USER; if(OpenKey('SOFTWARE\Valve\Half-Life\Settings',true)) then try for i := 0 to Listbox1.Items.Count - 1 do WriteString('HLKey'+inttostr(i),ListBox1.Items[i]); finally CloseKey; end; finally Free; end; end else ShowMessage('Mehr als 9 Keys gehen nicht...'); end; |
Noch einen Tick besser wäre dieser Weg (bitte anstelle der eben geschilderten Methode in den Code einfügen!)
Quelltext
1: 2: 3: 4: 5: 6: 7:
| if(OpenKey('SOFTWARE\Valve\Half-Life\Settings',true)) then try with Listbox1,Items do WriteString('HLKey' + inttostr(Count-1),Strings[Count-1]); finally CloseKey; end; |
Damit sparst du die Schleife, denn hier wird immer der zuletzt an die Listbox angehängte Eintrag gespeichert.
Zu deinem Löschproblem muss ich erst mal fragen: wie legst du den zu löschenden Eintrag denn fest? Tippst du den String noch mal in das Editfeld ein? Oder klickst du den zu löschenden Eintrag in der Listbox an? Ach, was soll´s ... Variante #1: du tippst den zu löschenden Text in das Editfeld ein:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| begin i := Listbox1.Items.IndexOf(edit3.Text);
if(i <> -1) then begin Listbox1.Items.Delete(i);
reg := TRegistry.Create; try reg.RootKey := HKEY_CURRENT_USER; if(reg.OpenKey('Software\Valve\Half-Life\Settings',false)) then try reg.DeleteValue('HLKey'+inttostr(i)); finally reg.CloseKey; end; finally reg.Free; end; end; end; |
Variante #2: du wählst den zu löschenden Eintrag aus der Listbox und klickst dann auf den Button:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| begin with Listbox1,Items do if(ItemIndex <> -1) then begin reg := TRegistry.Create; with reg do try RootKey := HKEY_CURRENT_USER; if(OpenKey('SOFTWARE\Valve\Half-Life\Settings',false)) then try if(DeleteValue('HLKey'+inttostr(ItemIndex))) then Delete(ItemIndex); finally CloseKey; end; finally Free; end; end; end; |