Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.354 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Funktionsaufruf: Dauert immer länger. Warum?

  Alt 12. Apr 2009, 07: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!
  Mit Zitat antworten Zitat