AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringfilter

Offene Frage von "blooddog_90"
Ein Thema von blooddog_90 · begonnen am 27. Jun 2009 · letzter Beitrag vom 28. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
blooddog_90

Registriert seit: 23. Sep 2007
24 Beiträge
 
Turbo Delphi für Win32
 
#1

Stringfilter

  Alt 27. Jun 2009, 17:55
Guten Tag alle zusammen

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:
var
sWort: string;
bContains: boolean;
aStrings: array [0..4] of string;

begin
aStrings := (' ','_','Ä','-');
sWort := edit1.text;
bContains := FilterFunction(sWort,aStrings);
end;
Und ich suche eben jetzt nach einer Function, die mir sowas erledigt wie "FilterFunction" und einen Wahrheitswert zurückliefert. Existiert sowas bereits?

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
polarwolf

Registriert seit: 6. Jan 2008
Ort: Bei Hamburg
10 Beiträge
 
Delphi 7 Personal
 
#2

Re: Stringfilter

  Alt 27. Jun 2009, 18:29
Da du geschrieben hast Namensvorschriften. Ich habe es mal so probiert.

Delphi-Quellcode:
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;
Aufruf:

Filter(text); Wenn meine wege doch meistens umständlich sind. sie funktionieren wenigstens.
hat jemand dafür eine schönere Funktion ?
Martin
  Mit Zitat antworten Zitat
Oreaden

Registriert seit: 10. Nov 2008
60 Beiträge
 
#3

Re: Stringfilter

  Alt 27. Jun 2009, 18:43
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;
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Stringfilter

  Alt 27. Jun 2009, 18:47
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, [ '-', ',', ':', '#', '@' ] );
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#5

Re: Stringfilter

  Alt 27. Jun 2009, 20:45
Delphi-Quellcode:
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;
Aufruf wie schon bei Aphton
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: Stringfilter

  Alt 27. Jun 2009, 21:50
Hallo,

Du könntest die Zeichen auch schon bei der Eingabe ausschließen.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Oreaden

Registriert seit: 10. Nov 2008
60 Beiträge
 
#7

Re: Stringfilter

  Alt 27. Jun 2009, 22:41
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
  Mit Zitat antworten Zitat
Dipl Phys Ernst Winter

Registriert seit: 14. Apr 2009
Ort: Jena
103 Beiträge
 
Delphi 3 Professional
 
#8

Re: Stringfilter

  Alt 27. Jun 2009, 22:56
"Oreaden"
Zitat:
function f(s, a: string): boolean;
Sehr aussagekräftig! Ich kann mir darunter jede Funktion zum testen eines Strings vorstellen.
Autor: DP Ernst Winter
  Mit Zitat antworten Zitat
Oreaden

Registriert seit: 10. Nov 2008
60 Beiträge
 
#9

Re: Stringfilter

  Alt 27. Jun 2009, 23:00
Zitat von Dipl Phys Ernst Winter:
"Oreaden"
Zitat:
function f(s, a: string): boolean;
Sehr aussagekräftig! Ich kann mir darunter jede Funktion zum testen eines Strings vorstellen.
juten morgen Ernst Winter,

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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Stringfilter

  Alt 28. Jun 2009, 02:21
Zitat von Oreaden:
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
Da mir grad langweilig ist... 255 Bits = fast 32 Bytes. Selbst in Delphi 2009 ist ein Char nur 2 Bytes groß
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz