![]() |
Hilfe string kontrolle missglückt
Hallo Delphi Leute
ich bin Schueler an der Fachober und soll ein rogramm schreiben das die Eingabe überprüft und nur Buchstaben zulässt das ist es :
Delphi-Quellcode:
er erkennt wenn man eine falsche eingabe macht richtig allerdings wenn ich nur buchstaben benutze sagt er richtig und dann nochmal falsch ... könnt ihr mir da weiterhelfen
procedure TForm1.btn_PruefenClick(Sender: TObject);
var Eingabe : string; i, Stringlänge : integer; Überprüfungsarray : array of char; Falsch, Richtig : Boolean; begin Eingabe := edtEingabe.Text; Stringlänge :=Length(Eingabe); SetLength(Überprüfungsarray,Stringlänge); for I := 0 to Stringlänge-1 do begin Überprüfungsarray[i]:= Eingabe[i]; if Überprüfungsarray[i] in ['a'..'z','A'..'Z'] then begin Richtig:=true; end else Falsch :=true; end; if Falsch = true then begin MessageDlg('Fehlerhafte Eingabe nur Buchstaben',mtError,mbOKCancel,0); MessageDlg(IntToStr(Stringlänge),mtInformation,mbOKCancel,0); edtEingabe.Clear; end; if Richtig = true then begin MessageDlg('Eingabe correct',mtInformation,mbOKCancel,0); edtEingabe.Clear; end; end; end. Gruß Epytir |
AW: Hilfe string kontrolle missglückt
Hallo,
du solltest die Schleife verlassen wenn ein Zeichen kein Buchstabe ist. Bei Deinem IF Konstrukt besser:
Delphi-Quellcode:
Ergänzung:
if falsch then
Die Variablen falsch und richtig hast Du nicht initialisiert (mit einem Wert vorbelegt). Grüße Klaus |
Dieses Thema wurde am "01. Feb 2011, 16:03 Uhr" von "Phoenix" aus dem Forum "Fragen / Anregungen zur DP" in das Forum "Sonstige Fragen zu Delphi" verschoben.
|
AW: Hilfe string kontrolle missglückt
wie verlasse ich die schleife denn dann und da muss ja trotzdem der fehler kommen mit nur buchstaben ?
|
AW: Hilfe string kontrolle missglückt
schon ok ich habs jetzt gelöst nach 1 stunde XD
ich hab nur einen booleon benutzt und denn auf false vordefiniert danke für den Tip :-) |
AW: Hilfe string kontrolle missglückt
.. ich hätte die Methode in etwas so aufgebaut.
Delphi-Quellcode:
procedure TForm1.btn_PruefenClick(Sender: TObject);
var Eingabe : string; i, Stringlänge : integer; Überprüfungsarray : array of char; //Falsch, richtig : Boolean; begin Eingabe := edtEingabe.Text; Stringlänge :=Length(Eingabe); SetLength(Überprüfungsarray,Stringlänge); for I := 0 to Stringlänge-1 do begin Überprüfungsarray[i]:= Eingabe[i]; richtig := Überprüfungsarray[i] in ['a'..'z','A'..'Z']); if not richtig then break; end; if Richtig then begin MessageDlg('Eingabe korrect',mtInformation,mbOKCancel,0); edtEingabe.Clear; end else begin MessageDlg('Fehlerhafte Eingabe nur Buchstaben',mtError,mbOKCancel,0); MessageDlg(IntToStr(Stringlänge),mtInformation,mbOKCancel,0); edtEingabe.Clear; end; end; |
AW: Hilfe string kontrolle missglückt
Hallo,
Du brauchst nicht beide Variablen "Richtig" und "Falsch"! Wenns "falsch" ist, dann setzt du "Richtig" einfach auf "false". Aber du machst es auch verdammt kompliziert. Einfacher geht es so:
Delphi-Quellcode:
procedure TForm1.btn_PruefenClick(Sender: TObject);
var Eingabe: String; begin Eingabe := edtEingabe.Text; OK := true; for i:= 1 to Length(Eingabe) do begin if not (Eingabe[i] in ['a'..'z','A'..'Z']) then begin OK := false; break; end; end; if OK then MessageDlg('Eingabe korrekt',mtInformation,mbOKCancel,0) else MessageDlg('Fehlerhafte Eingabe nur Buchstaben',mtError,mbOKCancel,0); edtEingabe.Clear; end; |
AW: Hilfe string kontrolle missglückt
Ein Schleife kannst du mit "break" vorzeitig verlassen.
Davon abgesehen ist es aber ungeschickt zwei Boolsche Variablen zu nehmen, die dann entweder true sind oder halt nix. Nimm doch nur eine, z.B. IstRichtig und setze sie auf true, wenn Buchstaben und false, wenn nicht. Dann könnte der Part mit den Messageboxen auf eine einfache if...else zurechtgestutzt werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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