Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#15

AW: Zwei Listen filtern Denkproblem

  Alt 28. Mai 2019, 14:02
Wäre es schneller die StringList durch eine TObjectList mit Klasseninstanzen zu ersetzen wo jede Klasse nur ein FCity: string hat?
Nein, das wäre vermutlich nicht schneller. Die Staedte1 sortieren könnte vielleicht was bringen. Auch der doppelte Split-Aufruf könnte in einer lokalen Variable gecached werden.
Delphi-Quellcode:
var
  dummy: Integer;
  tempArr: TArray<string>;
...
    Staedte1.Sorted := True;
    for j := Staedte2.Count - 1 downto 0 do
    begin
      tempArr := Staedte2[j].Split([',']);
      Stadt1 := tempArr[0];
      Stadt2 := tempArr[1];
      if not Staedte1.Find(Stadt1, dummy) or not Staedte1.Find(Stadt2) then
        Staedte2.Delete(j);
    end;
Wenn man auf das Split verzichten will, kann man das alternativ auch mit dem NameValueSeparator erreichen:
Delphi-Quellcode:
    Staedte1.Sorted := True;
    Staedte2.NameValueSeparator := ',';
    for j := Staedte2.Count - 1 downto 0 do
    begin
      Stadt1 := Staedte2.Names[j];
      Stadt2 := Staedte2.ValueFromIndex[j];
      if not Staedte1.Find(Stadt1, dummy) or not Staedte1.Find(Stadt2, dummy) then
        Staedte2.Delete(j);
    end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat