Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
Delphi 11 Alexandria
|
Re: Funktionsaufruf: Dauert immer länger. Warum?
12. Apr 2009, 08:29
Ich würde noch die impliziten Aufrufe von UniqueString unterdrücken indem ich diese Automatik durch Pointer aushebele. Damit komme ich auf ca. 20ms:
Delphi-Quellcode:
function ClearStr5(const Str: string): String;
const
ValidChars = ['a'..'z','A'..'Z','ä','ö','ü','Ä','Ö','Ü','ß',' '];
var
i, Len: Integer;
CurIn, CurOut: ^Char;
begin
Len := Length(Str);
SetLength(Result, Len);
CurIn := Pointer(Str);
CurOut := Pointer(Result);
for i := 1 to Len do
begin
if CurIn^ in ValidChars then
begin
CurOut^ := CurIn^;
Inc(CurOut);
end;
Inc(CurIn);
end;
SetLength(Result, Integer(CurOut) - Integer(Pointer(Result)));
end;
Sebastian Jänicke Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
|
|
Zitat
|