AGB  ·  Datenschutz  ·  Impressum  







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

Hilfe string kontrolle missglückt

Ein Thema von Epytir · begonnen am 1. Feb 2011 · letzter Beitrag vom 1. Feb 2011
Antwort Antwort
Epytir

Registriert seit: 27. Nov 2009
11 Beiträge
 
#1

Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 15:58
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:
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.
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
Gruß Epytir
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.774 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:01
Hallo,

du solltest die Schleife verlassen wenn ein Zeichen kein Buchstabe ist.

Bei Deinem IF Konstrukt besser:

if falsch then Ergänzung:

Die Variablen falsch und richtig hast Du nicht initialisiert (mit einem Wert vorbelegt).

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
1. Feb 2011, 16:03
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.
Epytir

Registriert seit: 27. Nov 2009
11 Beiträge
 
#4

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:05
wie verlasse ich die schleife denn dann und da muss ja trotzdem der fehler kommen mit nur buchstaben ?
  Mit Zitat antworten Zitat
Epytir

Registriert seit: 27. Nov 2009
11 Beiträge
 
#5

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:10
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.774 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:10
.. 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;
Klaus
  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
 
#7

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:12
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;
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Hilfe string kontrolle missglückt

  Alt 1. Feb 2011, 16:14
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.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:44 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 by Thomas Breitkreuz