Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Lehre Zeichenkette prüfen??? (https://www.delphipraxis.net/23214-lehre-zeichenkette-pruefen.html)

lurch 30. Mai 2004 23:52


Lehre Zeichenkette prüfen???
 
Also ich hab ein kleines Problem, ich muss gerade ne Abschlußarbeit in Informatik schreiben (Kl.11)!
Da ich zwei Fälle bearbeit sind 4 Eingabefälder vorhanden es dürfen aber je Fall nur 3 Ausgefüllt werden. Wie sag ich dem Programm (if-then-Anweisung), dass wenn Edit4 frei und die anderen Edit-Felder besetzt sind er die Eingabe bestätigt anderenfals eine Fehlermeldung raus gibt. Probiert hab ich es so klappt aber nicht: Formatierter Pascal-Quellcode:
Delphi-Quellcode:
 if ((Edit4.Text = '') and not((Edit1.Text = '') and (Edit2.Text = '') and (Edit3.Text = ''))) then

kiar 30. Mai 2004 23:55

Re: Lehre Zeichenkette prüfen???
 
hallo lurch,

willkommen in der dp.

schaue mal in der oh nach length.


raik

phlux 30. Mai 2004 23:58

Re: Lehre Zeichenkette prüfen???
 
Hi, und herzlich willkommen in der DP! :dp:
Ich würde es wie folgt schreiben:

Delphi-Quellcode:
begin
  If (Edit4.Text = '') and (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
    //do something
end;
Wenn ich mich nicht irre kann man auch noch um die Abfrage ob Edit1 bis Edit3 nicht leer sind ne Klammer setzen, drüfte aber auch so funzen ;)

mfg phlux :hi:

PS: Leer kommt nicht vom Lehren ;) :lol:

lurch 31. Mai 2004 00:13

Re: Lehre Zeichenkette prüfen???
 
Also das klappt auch nicht der Fehler muss daran liegen, dass das Programm nicht weiß was ich mit den beiden
Delphi-Quellcode:
''
will. Gibt es noch eine andere Möglichkeit dem Prog zu sagen das er es mit einem "leeren" Editfeld zu tun hat???

Muetze1 31. Mai 2004 00:18

Re: Lehre Zeichenkette prüfen???
 
Moin!

Kann es sein, das die Editfelder nicht ganz leer sind, sondern ein Leerzeichen drinne ist/sind?

wirklich leer:
Delphi-Quellcode:
begin
  If (Length(Edit4.Text) = 0) and (Length(Edit1.Text) > 0) and (Length(Edit2.Text) > 0) and (Length(Edit3.Text) > 0) then
    //do something
end;
Ignorieren von Leerzeichen:
Delphi-Quellcode:
begin
  If (Length(Trim(Edit4.Text)) = 0) and (Length(Trim(Edit1.Text)) > 0) and (Length(Trim(Edit2.Text)) > 0) and (Length(Trim(Edit3.Text)) > 0) then
    //do something
end;
MfG
Muetze1

kiar 31. Mai 2004 00:18

Re: Lehre Zeichenkette prüfen???
 
Delphi-Quellcode:
If length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
zu langsam :twisted:

raik

lurch 31. Mai 2004 00:28

Re: Lehre Zeichenkette prüfen???
 
Also ich glaub ihr hab mich schon ein ganzes stückchen weiter gebracht. Klappern tut es aber immer noch nicht leider is mir schon fast peinlich, aber ich schreib hier jetzt einfach ma den Quelltext für den Ablauf dar, der prüfen soll ob alle Eingaben regelkonform sind:
Delphi-Quellcode:
function detest(a,b,c:real):boolean;
  begin
    if ((a+b>c) and (a+c>b)and (b+c>a)) then result:= true
    else result:= false
  end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,gamma:real; g:integer;
  begin
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.Itemindex;
  case g of
    0:begin
        c:=StrToFloat(Edit3.Text);
             If length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
            begin
              if detest(a,b,c)=true then
              begin
                Showmessage ('Ihre Eingaben sind richtig');
                exit
                end
            else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
            end
          else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
          end;
    1: begin
        gamma:=StrToFloat(Edit4.Text);
          If length(Edit3.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit4.Text) <> 0)) then
            if gamma <= 180 then MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
              else begin
                    ShowMessage ('Ihre Eingaben sind richtig');
                    exit
                    end
            else MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
      end;
  end;
  end;
end.

Markus K. 31. Mai 2004 00:48

Re: Lehre Zeichenkette prüfen???
 
Hallo lurch,
was funktioniert denn nicht? Was für Fehlermeldungen kommen eventuell?
Desweiteren würde ich sagen, dass du zwei Klammern vegessen hast.
Delphi-Quellcode:
If (length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
bzw.
Delphi-Quellcode:
If (length(Edit3.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit4.Text) <> 0)) then
Tschüß Markus

kiar 31. Mai 2004 01:00

Re: Lehre Zeichenkette prüfen???
 
man war das ne geburt ,versuche es mal so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,
    b,
    c,
    gamma:real;
    g:integer;
begin
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.ItemIndex;
  case g of
    0: begin
        c:=StrToFloat(Edit3.Text);
        If ((length(Edit4.Text) = 0) and (a <> 0) and (b <> 0) and (c <> 0) ) then
           begin
            if detest(a,b,c) then
             begin
               Showmessage ('Ihre Eingaben sind richtig');
               exit;
             end;
           end else
                 MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
           end;

    1: begin
        gamma:=StrToFloat(Edit4.Text);
        If ((length(Edit3.Text) = 0) and (a <> 0) and (b <> 0) and (gamma <> 0)) then
          begin
          if gamma > 180 then
             begin
               ShowMessage ('Ihre Eingaben sind richtig');
               exit;
             end;
          end else
           MessageDlg('Eingabe unzulässig! Kein Dreieck konstruierbar',mtError,[mbOK],0)
         end;
  end;
  end;
end.
schau dir auch mal die die funktion detest an,die schein nicht zu funktionieren

alcaeus 31. Mai 2004 03:32

Re: Lehre Zeichenkette prüfen???
 
Ich will ja nichts sagen, aber der kommt gar nicht bis zur Fehlermeldung wenn der Benutzer zwei Felder freigelassen hat. Die Begründung liegt in diesem Code:
Delphi-Quellcode:
    a:=StrToFloat(Edit1.Text);
    b:=StrToFloat(Edit2.Text);
    g:=Radiogroup1.ItemIndex;
  case g of
    0: begin
        c:=StrToFloat(Edit3.Text);
Ist einer von den drei Edits noch leer, so wirst du mit einem EConvertError aus der Funktion fliegen. Ich würd mal try-except oder TryStrToFloat verwenden. Ansonsten kannst du hier gar keine ungültige Eingabe abfangen, die kommt durch ne Exception.

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.
Seite 1 von 2  1 2      

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