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;