Interessant!!
Gibt es auch einen
Unittest, um die Funktionsfähigkeit zu weisen?
Gerade bei so einer komplexen Funktion sollte man diese Tests unbedingt ausführen
und bei jeder weiteren Optimierung erneut ausführen.
Delphi-Quellcode:
// ungetestet reingehackt
procedure TestTStringDivider;
var
sd : TStringDivider;
list : TStringList;
s, delim : string;
begin
sd := TStringDivider.Create;
list := TStringList.Create;
delim := 'abcd';
// Test #1
s := '';
sd.Explode(s, delim, list);
Assert(list.Count=0);
// Test #2
s := 'delphi'+delim+'Praxis';
sd.Explode(s, delim, list);
Assert(list.Count=2);
Assert(list[0] = 'delphi');
Assert(list[0] = 'Praxis');
// Test #3
s := 'delphi'+delim+'Praxis'+delim+delim+delim;
sd.Explode(s, delim, list);
Assert(list.Count=5);
...
end;
PS: Vielleicht sollte man den Boyer-Moore Algorithmus in eine eigene Klasse verlagern,
um so einen zusätzlichen Nutzen zu gewinnen.