Autor Beitrag
Leathl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Do 02.01.03 21:03 
---


Zuletzt bearbeitet von Leathl am So 16.08.09 12:57, insgesamt 1-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.01.03 22:07 
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:
ausblenden 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!)
ausblenden 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:
ausblenden 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:
ausblenden 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;
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Do 02.01.03 23:16 
---