Zitat von
friedemann2009:
EDIT Ich bin baff, das ist ja ultraschneller! Ha, wieder was dazugelernt! Danke nochmals herzlich!!
Ist schon von "Vorteil", wenn man einige 100.000.000 "langsame" Stringoperationen einfach mal wegläßt.
z.B. hier mal das, welches sich hinter TokenListeKorpus
.Values versteckt:
Delphi-Quellcode:
procedure TStrings.SetValue(const Name, Value: string);
var
I: Integer;
begin
I := IndexOfName(Name);
if Value <> '' then
begin
if I < 0 then I := Add('');
Put(I, Name + NameValueSeparator + Value);
end else
begin
if I >= 0 then Delete(I);
end;
end;
function TStrings.GetValue(const Name: string): string;
var
I: Integer;
begin
I := IndexOfName(Name);
if I >= 0 then
Result := Copy(Get(I), Length(Name) + 2, MaxInt) else
Result := '';
end;
Da passiert also so Einiges.
Und nochmal bezüglich dem "sortiert" ... die Funktion Find ist im Verhältnis zur Listengröße expotentiell schneller als der "normale" IndexOf:
Delphi-Quellcode:
function TStringList.IndexOf(const S: string): Integer;
begin
if not Sorted then Result := inherited IndexOf(S) else
if not Find(S, Result) then Result := -1;
end;