![]() |
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
|
Re: Lehre Zeichenkette prüfen???
hallo lurch,
willkommen in der dp. schaue mal in der oh nach length. raik |
Re: Lehre Zeichenkette prüfen???
Hi, und herzlich willkommen in der DP! :dp:
Ich würde es wie folgt schreiben:
Delphi-Quellcode:
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 ;)
begin
If (Edit4.Text = '') and (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then //do something end; mfg phlux :hi: PS: Leer kommt nicht vom Lehren ;) :lol: |
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???
''
|
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:
Ignorieren von Leerzeichen:
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;
Delphi-Quellcode:
MfG
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; Muetze1 |
Re: Lehre Zeichenkette prüfen???
Delphi-Quellcode:
zu langsam :twisted:
If length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
raik |
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. |
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:
bzw.
If (length(Edit4.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit3.Text) <> 0)) then
Delphi-Quellcode:
Tschüß Markus
If (length(Edit3.Text) = 0) and ((length(Edit1.Text) <> 0) and (length(Edit2.Text) <> 0) and (length(Edit4.Text) <> 0)) then
|
Re: Lehre Zeichenkette prüfen???
man war das ne geburt ,versuche es mal so
Delphi-Quellcode:
schau dir auch mal die die funktion detest an,die schein nicht zu funktionieren
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. |
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:
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.
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text); g:=Radiogroup1.ItemIndex; case g of 0: begin c:=StrToFloat(Edit3.Text); Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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