![]() |
Stringfilter
Guten Tag alle zusammen :lol:
Ich bin auf der Suche nach einer Möglichkeit, die es mir erlaubt mehrere Strings zu filtern. Sowas braucht man zum Beispiel bei Namensvorschriften. Wenn es in einem Programm also nicht erlaubt ist, bei der Eingabe Leerzeichen, Tabs oder Umlaute zuverwenden. Also dachte ich mir, da gibt es doch bestimmt irgendwas, was mir einen String daraufhin überprüft ob eines dieser Zeichen vorhanden ist. Gibt es denn sowas auch? Code Schnipsel die mir dazu einfallen (aka Pseudocode):
Delphi-Quellcode:
Und ich suche eben jetzt nach einer Function, die mir sowas erledigt wie "FilterFunction" und einen Wahrheitswert zurückliefert. Existiert sowas bereits?
var
sWort: string; bContains: boolean; aStrings: array [0..4] of string; begin aStrings := (' ','_','Ä','-'); sWort := edit1.text; bContains := FilterFunction(sWort,aStrings); end; [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: Stringfilter
Da du geschrieben hast Namensvorschriften. Ich habe es mal so probiert.
Delphi-Quellcode:
Aufruf:
function Filter(text: string):Boolean;
var i:integer; Buchstabe:string; begin result:=false; for i := 1 to Length(text) do begin Buchstabe:=(Copy (text, i, 1)); if Buchstabe = 'Ä' then begin result:=true; break; end; end; end;
Delphi-Quellcode:
Wenn meine wege doch meistens umständlich sind. sie funktionieren wenigstens.
Filter(text);
hat jemand dafür eine schönere Funktion ? |
Re: Stringfilter
Wie wär es damit?
Delphi-Quellcode:
function f(s, a: string): boolean;
var c: char; begin result := false; if (length(s) = 0) or (length(a) = 0) then exit; for c in s do if pos(c, a) > 0 then begin result := true; exit; end; end; |
Re: Stringfilter
Delphi-Quellcode:
// Code
procedure FilterText( var Text: String; const BadChars: Array of Char ); var i, j: Integer; x: Boolean; begin i := 1; while i <= Length( Text ) do begin x := True; for j := 0 to High(BadChars) do if Text[i] = BadChars[j] then begin while Text[i] = BadChars[j] do Delete( Text, i, 1 ); x := False; end; if x then inc( i ); end; end; // Beispielsaufruf str := '-;:#TestString Blabla #@'; FilterText( str, [ '-', ',', ':', '#', '@' ] ); |
Re: Stringfilter
Delphi-Quellcode:
Aufruf wie schon bei Aphton
procedure FilterText( var Text: String; BadChars: Set of Char );
var i: Integer; begin for i := Length(Text) downto 1 do if Text[i] in BadChars then Delete(Text, i, 1); end; |
Re: Stringfilter
Hallo,
Du könntest die Zeichen auch schon bei der Eingabe ausschließen. |
Re: Stringfilter
Seit gegrüßed himitsu,
Ihr wießed doch, dass Eurer Code nur bis D2007 gültig ist, da ein Char ab D2009 mehr als 255 Bits umfassen kann... Schöne Grüße Oreaden |
Re: Stringfilter
"Oreaden"
Zitat:
|
Re: Stringfilter
Zitat:
yep, der bezug geht aus dem kontext hervor. wenn die funktion jedoch ohne kontext in der lib abgelegt wird, so wie deine vorschläge dann tut man sich mit der interpretation doch sehr schwer. daher war meine bitte an dich, es auch zu dokumentieren... hier habe ich bewusst, deinen style genommen um zu zeigen, dass die kürze und prägnanz der funktion nicht nur vorteile hat. einfach mal zum nachdenken. Oreaden |
Re: Stringfilter
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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