@ raiguen,
zu #25 geht das?
Delphi-Quellcode:
procedure TForm1.bIndexDeleteClick(Sender: TObject);
var
cnt : integer;
begin
for cnt := ListBoxIndex.Items.Count -1 downto 0 do
Table.DeleteIndex(ListBoxIndex.Items[cnt]); // neuen Index löschen
//--gesammte Listbox auf einen Schlag Löschen
ListBoxIndex.Items.Clear; <-----------------!!!
//--internes Array mit den Indexdefinitionen aktualisieren
Table.IndexDefs.Update;
//--evtl. Speichern der Definitionen verhindern
Table.StoreDefs := false;
end;
Es sind zB. 10 Indexe vorhanden und auch zu löschen.
In der Schleife wird der 1 Eintrag gefunden, der dazugehörige Index wird gelöscht. Beim Durchlauf der Schleife wird dann der ges. Inhalt mit
ListBoxIndex.Items.Clear; gelöscht. Beim nächsten Durchlauf ist nichts mehr in der Liste, weil vollständig gelöscht.
Es verbleiben also noch 9 von den ursprüngichen 10 Indexen irgendwo im Speicher.
Sehe ich das richtig? Habe das auch nicht getestet.
Die ListBox benutze ich nicht mehr, stattdessen eine StringList und ich glaube, daß das Erstellen der Indexe deutlich schneller geht.
Ansonsten läuft das Teil super und völlig fehlerfrei.
Fritz