Einzelnen Beitrag anzeigen

Paul Schmidt

Registriert seit: 7. Feb 2006
22 Beiträge
 
#1

Funktion schneller machen?

  Alt 2. Mär 2006, 22:54
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
  Mit Zitat antworten Zitat