![]() |
WhiteSpaceTrim: Schnellere Version, wie aber trimmen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich habe meine neuen Kenntnisse durch Euch bei nachfolgender Funktion ausprobiert,
die in einem String Leerräume entfernt, wenn diese mehr als 1x vorkommen:
Delphi-Quellcode:
Das Original mit fast 1000ms langsam, die neue Version benötigt nur ca. 40ms im vorliegendem Beispiel. Schön wäre noch eine Version, die die Leerräume links und rechts entfernt.
program CleanWhiteSpace;
{$APPTYPE CONSOLE} uses //FastMM4, FastMove, //Optimize, //RTLVclOptimize, SysUtils, // Für Profiler.inc notwendig Windows; // Für Profiler.inc notwendig {$include Profiler.inc} var xx,ii:Integer; // Nur für den Testlauf notwendig // Original Version // [EDIT] Code gelöscht. Veröffentlichung ist auf anderen Seiten nicht erlaubt. function OldwhitespaceTrim(str : string) : string; begin // Leer end; //... Original Version ENDE // Datum: 12.04.2009 // Löscht Leerräume, wenn diese mehr als 1x vorkommen. // // Neue Version function WhiteSpaceTrim(const Str: string): String; var i, Len,space: Integer; CurIn, CurOut: ^Char; begin Len := Length(Str); SetLength(Result, Len); CurIn := Pointer(Str); CurOut := Pointer(Result); space:= 0; for i := 1 to Len do begin if space <> 1 then begin CurOut^ := CurIn^; Inc(CurOut); if(CurIn^ = ' ') then inc(space); end else if Curin^ <> ' ' then begin CurOut^ := CurIn^; Inc(CurOut); space := 0; end; inc(curin); end; //SetLength(Result, Integer(CurOut) - Integer(Pointer(Result))); SetLength(Result, CurOut - PChar(Pointer(Result))); end; begin Writeln; // [EDIT] Code gelöscht... Writeln('Teste... WhiteStringTrim -neu- '); for xx := 1 to 10 do begin Start; for ii :=1 to 100000 do whitespaceTrim(' auf der Mauer '); Stopp; end; Writeln('Ergebnis muss -auf der Mauer- sein:'); Writeln(whitespaceTrim('-'+' auf der Mauer '+'-'));Writeln; Writeln('- ProgrammEnde mit [ENTER] -');Readln; end. Dann noch ein LF zu beseitigen wäre wohl kein Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz