Um den Anfang auch noch wegzuoptimieren...
Delphi-Quellcode:
procedure TWoerterbuch.Filter(const Suchwort: string; FilterResult: TStrings);
var
i: Integer;
begin
Assert(Assigned(FilterResult));
FilterResult.BeginUpdate;
try
FilterResult.Clear;
if Suchwort <> '' then begin
FWoerter.Find(SearchWord, i);
while (i < FWoerter.Count) and AnsiStartsText(Suchwort, FWoerter[i]) do
FilterResult.Add(FWoerter[i]);
end else
FilterResult.AddStrings(FWoerter);
finally
FilterResult.EndUpdate;
end;
end;
(ich hoffe es funktioniert)
Delphi-Quellcode:
function TDictionary.Filter(const SearchWord: string; FilterResult: TStrings; OnlyAtTheBeginningOfWords: Boolean): Boolean;
var
i: Integer;
begin
Assert(Assigned(FilterResult));
FilterResult.BeginUpdate;
try
FilterResult.Clear;
if SearchWord <> '' then begin
FListOfWords.Find(SearchWord, i);
while (i < FListOfWords.Count)
and ((not OnlyAtTheBeginningOfWords and AnsiContainsText(SearchWord, FListOfWords[i]))
or (OnlyAtTheBeginningOfWords and AnsiStartsText(SearchWord, FListOfWords[i]))) do
FilterResult.Add(FListOfWords[i]);
end else
FilterResult.AddStrings(FListOfWords);
finally
Result := FilterResult.Count <> 0;
FilterResult.EndUpdate;
end;
end;
Und wenn man nun noch Names und Values verwendet, bekommt man auch noch die Übersetzung mit rein.