Hallihallo
Folgendes Problem:
ich habe eine StringList (LISTE1) mit ca. 10.000 Einträgen der Form:
LISTE1:
Key1=Wert1
Key1=Wert2
Key1=Wert3
Key1=Wert4
Key1=Wert5
Key1=Wert6
Key2=Wert1
Key2=Wert2
Key2=Wert3
Key2=Wert4
Key2=Wert5
Key2=Wert6
Key3=Wert1
Key3=Wert2
Key3=Wert3
Key4=Wert1
Key4=Wert2
Key4=Wert3
usw.
D.h.: es gibt mehrere gleichlautende "key"s und dazu jeweils unterschiedliche Werte, wobei die Anzahl der Paare schwankend ist. Also manchmal hat ein key 10 verschiedene Werte und ein anderer key eben nur mal 3 oder so.
Bis hierhin, ok.
Nun habe ich eine weitere Liste (LISTE2) mit ca. 700 Einträgen, die nur aus "key"s besteht, also:
LISTE2:
key1
key3
key4
key8
key11
Jetzt muss ich diese 700 Einträge abarbeiten und in der Liste mit den 10.000 Einträgen schauen, ob der key vorhanden ist und wenn ja, seine entsprechenden Werte "einsammeln".
Bisher hab ich's so gemacht:
Delphi-Quellcode:
for i := 0 to LISTE2.Count -1 do
begin
if NOT(LISTE1.IndexOfName(LISTE2.Strings[i]) = -1) then
begin
while NOT(LISTE1.IndexOfName(LISTE2.Strings[i]) = -1) do
begin
//schreibe zugehörigen WERT in andere Liste
LISTE1.Delete(LISTE1.IndexOfName(LISTE2.Strings[i]));
end;
end;
end;
So, mit der Methode dauerts halt schon ein paar Sekunden.
Kennt ihr vllt. ne bessere Möglichkeit, um das ganze etwas zu beschleunigen?
Bin für jeden brauchbaren Hinweis dankbar!
Grüße,
der Paule