ich melde mich noch ein letztes mal. die letzte stunde habe ich mir das mit dem bagage mal genauer angeguckt.
wenn ich vorher ein item angeklickt habe, habe ich mir das dazu passende item in der stringlist mit zwei verschachtelten for-schleifen gesucht.
bei wenigen dateien kein problem. aber dann habe ich es mit 13.000 probiert. rein rechnerich beenden sich die schleifen nicht für 13.000 * 13.000 duchläufe.
das war aber alles zu lange. ein durchlauf war noch nach 5 minuten nicht beendet.
jetzt gebe ich jedem listitem bei der erstellung (Items.Add) daten bei .Data mit auf dem weg.
suche ich nun den passenden eintrag in der stringlist sieht das so aus:
Delphi-Quellcode:
with ListView1 do
begin
for i := 0 to Items.Count - 1 do
begin
if not Items[i].Checked then
begin
IndexInSL := TMeineDaten(Items[i].Data).MeinIndex;
WertInSL := WerteListe.Strings[IndexInSL];
if WertInSL[1] = '_' then
WerteListe.Strings[IndexInSL] := Copy(WertInSL, 2, Length(WertInSL))
else
WerteListe.Strings[IndexInSL] := '_' + WertInSL;
end;
end;
end;
statt 13.000 * 13.000 durchläufen gibt es nun nur noch 13.000 und statt 5 minuten und mehr dauert das alles nur noch 400 millisekunden.