![]() |
String untersuchen...
Folgendes Problem:
Ein vom User eingegebener String (via editfeld) soll darauf untersucht werden, ob ein zweiter eingegebener String (editfeld) mehr als drei aufeinander folgender Zeichen gleich hat. Bsp: edit1:='langerName' edit2:='german' In diesem Fall müsste das Programm anspringen, da in edit1 u. edit2 die zeichenfolge 'ger' verwendet wurde. Habe es mal so gemacht, allerdings funktioniert das nur solange wie mein edit2 text kürzer als edit1 text ist.
Delphi-Quellcode:
//Nicht drei aufeinander folgende Zeichen aus dem Benutzernamen
StrBenutzer:=...; if Pos(newstring, StrBenutzer) > 0 then //Suchen in Benutzername nach erstem gleichen eingegebenem Zeichen aus Kennwort(newstring) if AnsiCompareText(TableBenutzerBenutzer.Text, StrBenutzer) <= 0 then //Wenn weitere identisch ungültiges Passwort begin messagedlg('Aufeinander folgende Zeichen aus Benutzername sind nicht erlaubt.', mtInformation, [mbOk],0); ClickedOK:=False; end; |
Re: String untersuchen...
hab das bissl probiert und bei meinen testfällen hats geklappt... Kann aber sein in dem Source is noch nen fehler oder sowas drin
Delphi-Quellcode:
function isdrin(bigone: String; littleone: String; mingleich: Integer; casesensitiv: Boolean = False): Boolean;
var wdh1: Integer; begin if casesensitiv then begin bigone := lowercase(bigone); littleone := lowercase(littleone); end; result := False; wdh1 := 1; while (wdh1 + mingleich - 1 <= length(littleone)) and (result = False) do begin if pos(copy(littleone,wdh1, mingleich), bigone) > 0 then result := True; wdh1 := wdh1 + 1 end; end; |
Re: String untersuchen...
danke erstmal.
Nur hast Du da wohl was falsch verstanden. Der Benutzer darf ja einen selben Buchstaben verwenden, nur ab drei gleich aufeinander folgenden soll Eingabe nicht akzeptiert werden. Dabei kann der 2. string natürlich auch kürzer sein, sprich der string 2 liegt zwischen 3 und x Buchstaben (x wird immer unter 20 liegen). Bsp.1: edit1 eingegeben: Administrator edit2 eingegeben: fussballtor Nun soll proggi das 'tor' erkennen Bsp.2: edit1 eingegeben: Herbert edit2 eingegeben: Heben Nun soll proggi das 'he' und 'be' nicht anmeckern, erst ab 3en. gleichen Buchstaben. Müsste allen klar sein wie ich es meine. Wie mache ich es unabhängig vn der stringlänge? PS: So ganz kapiert habe ich die source in obigem post nicht... |
Re: String untersuchen...
Mal ein ungesteter Schnellschuß:
Delphi-Quellcode:
if (pos('beg', s1) > 0) and (pos('beg', s2) > 0) then
...; |
Re: String untersuchen...
PseudoCode:
Delphi-Quellcode:
Function ... (Str1, Str2: String):Boolean;
var i : integer; tmp : String; begin Result := False; if ( length(Str1) < 3 ) or ( length(Str2) < 3 ) then exit; // nothing to do for i := 1 to Length( Str1 ) - 2 do begin Tmp := Copy( Str1, i, 3 ); if pos( Tmp, Str2 ) > 0 then begin Result := True; Break; end; end; end; |
Re: String untersuchen...
@lucki:
mir ist unklar welche string ich in die zwei Funktionen einsetzen soll/muss. Habe doch nur einen hauptstring welcher mit dem zweitstring überprüft werden soll. @Tom: irgendwie funktioniert dass nicht wirklich, entweder er meckert mir immer herum, oder er akzeptiert gleiche string. Werd noch wahnsinnig mit der Funktion :wall: |
Re: String untersuchen...
s1 und s2 sind die Strings, die du überprüfen willst umd 'beg' ist die zu untersuchende Zeichenfolge.
|
Re: String untersuchen...
ich habe doch eine variable zeichenfolge die ich untersuchen will
|
Re: String untersuchen...
Zitat:
1) "Meckert rum" ist so ziemlich die sinnvollste Art der Wiedergabe einer Fehlermeldung. 2) Der Source tut es. 3) True wird zurückgegeben, wenn 3 Buchstaben identisch sind. 4) Es wird zwischen Groß- und Kleinschreibung unterschieden. |
Re: String untersuchen...
Zitat:
2) tut was :oops: 3) das klappt bei mir leider nicht, momentan bringt er es jedes mal. 4) ist ausnahmsweise mal klar :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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