![]() |
AnsiCharPos - Einzelne Zeichen in einem String suchen
Hallo Delphianer,
Vor kurzem konnte ich einen gewichtigen Performance Gewinn erzielen durch Einsatz von AnsiStrScan anstelle AnsiPos. Dies funktioniert, wenn nur nach einem Zeichen gesucht werden muss. Also habe ich mich auf die Suche nach einem AnsiCharPos in Delphi und im Internet gemacht und nichts gefunden ! ... Habe das Ganze in eine Funktion gepackt mit dem Ziel kompatibel zu AnsiPos zu sein. Also identische Verwendung, aber bessere Performance, wenn nur nach einem Zeichen gesucht werden muss.
Delphi-Quellcode:
Bestehende Aufrufe lassen sich wie folgt ersetzen:
// AnsiCharPos für Delphi von Peter Schaible
// Schnelleres AnsiPos bei der Suche nach nur einem Zeichen! // Aufruf- und Ergebniskompatibel zu AnsiPos mit gewollter Ausnahme des Char anstelle des Strings // Sonderbehandlung von NIL,'' oder #0 wie bei AnsiPos ebenfalls berücksichtigt function AnsiCharPos(aChar: Char; const S: string): Integer; var P: PChar; begin result := 0; if (aChar=#0) then exit; P := AnsiStrScan(PChar(S),aChar); if (P<>nil) then result := Integer(P)-Integer(PChar(S)) + 1; end;
Delphi-Quellcode:
Geprüft mit folgenden Aufrufen (liefern identische Ergebnisse zu AnsiPos):
...
i1 := AnsiPos('=',sLine); ... // ==> ... i1 := AnsiCharPos('=',sLine) ... Zitat:
delphi10 hat den Code noch einem Performance-Test unterzogen: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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