Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle anderen Zeichen außer a-z entfernen! (https://www.delphipraxis.net/54437-alle-anderen-zeichen-ausser-z-entfernen.html)

sakura 4. Okt 2005 20:20

Re: Alle anderen Zeichen außer a-z entfernen!
 
Zitat:

Zitat von Sharky
Das interessiert mich jetzt aber:
Was ist es für ein Unterschied wie der String der Untersucht werden soll zusammengesetzt wurde?

Eigentlich ganz einfach. Für meine Funktion erwarte ich keine Unterschiede, für die andere einen leichten Performancegewinn, da seltener kopiert werden muss, da ca. 1/3 der Zeichen nicht übernommen wird :zwinker:

...:cat:...

Sharky 4. Okt 2005 20:26

Re: Alle anderen Zeichen außer a-z entfernen!
 
Zitat:

Zitat von sakura
... da seltener kopiert werden muss, da ca. 1/3 der Zeichen nicht übernommen wird ...

Ahhh.... Also keinen Unterschied durch die Funktion an sich sondern durch die Überlegung der "normalen" Verteilung.

Aber da man die Geschwindigkeit einer Funktion immer in den Extremen testen muss liefert mein Test das richtige Ergebniss. ;-)

sakura 7. Okt 2005 10:12

Re: Alle anderen Zeichen außer a-z entfernen!
 
[quote="SharkyAber da man die Geschwindigkeit einer Funktion immer in den Extremen testen muss liefert mein Test das richtige Ergebniss. ;-)[/quote]Ein anderes Extrem wären leere Strings, da könnte es sein, dass die zweite Methode schneller ist als meine :mrgreen:

...:cat:...

shmia 7. Okt 2005 10:33

Re: Alle anderen Zeichen außer a-z entfernen!
 
Da werfe ich doch mal die Funktion aus der JCL in die Runde.
Kackig, Schnell und Universell.
Delphi-Quellcode:
function StrKeepChars(const S: AnsiString; const Chars: TSysCharSet): AnsiString;
var
  Source, Dest: PChar;
begin
  SetLength(Result, Length(S));
  UniqueString(Result);
  Source := PChar(S);
  Dest := PChar(Result);
  while (Source <> nil) and (Source^ <> #0) do
  begin
    if Source^ in Chars then
    begin
      Dest^ := Source^;
      Inc(Dest);
    end;
    Inc(Source);
  end;
  SetLength(Result, (Longint(Dest) - Longint(PChar(Result))) div SizeOf(AnsiChar));
end;
// Beispiel
s := StrKeepChars(s, ['a'-'z', 'A'-'Z']);


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 2 von 2     12   

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