Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.475 Beiträge
Delphi 12 Athens
|
AW: Alternative zu PosEx
28. Nov 2024, 16:02
Zum Vergleich mit Pos() und SetLength() für das Ergebnis:
Delphi-Quellcode:
function MyStrPosEx(const SearchFor, SearchIn: string): TIntegerDynArray;
function Search(var Index: Integer): Boolean;
begin
Index := Pos(SearchFor, SearchIn, Index + 1);
Result := (Index > 0);
end;
begin
var Count: Integer := 0;
var Index: Integer := 0;
while Search(Index) do
begin
Inc(Count);
{Array vergrößern braucht viel Zeit, deshalb gleich etwas mehr Platz reservieren}
if Length(Result) < Count then
SetLength(Result, Count * 4);
Result[Count - 1] := Index;
end;
SetLength(Result, Count);
end;
Code:
sRandomString := RandomString(MaxInt div 8 - 6) + 'PaPaPa'
0:00:01.327
SetLength(Positions, 3)
StrPosEx('PaPa', 'sRandomString', Positions)
0:00:00.081
Result = 1
Positions = [268435450,0,0]
Result := MyStrPosEx('PaPa', 'sRandomString')
0:00:00.075
Result = [268435450,268435452]
|
|
Zitat
|