![]() |
2 Bedingungen unterschiedlicher Typen in einer IF Abfrage
Hallo zusammen!
ich möchte -ausgehend von einem Eingabefeld - den eingegebenen Wert auf 2 Bedingungen überprüfen. Im Moment habe ich dafür 2 (!) If-Abfragen. Das hat allerdings zur Auswirkung, dass bei Erfüllung BEIDER Bedingungen auch 2 ShowMessages kommen.... Wie bekomme ich es nun hin, diese beiden Bedingungen in EINER Abfrage zu prüfen, jeweils mit der "passenden" Meldung?
Delphi-Quellcode:
IF length (lsMinute_b) > 2 then begin //lsMinute_b --> String
Windows.Beep(2000,250) ; ShowMessage ('Eingabe falsch! Die Anzahl der Stellen für die Minutenwerte hat mehr als 2 Stellen!'); OutputC.text := 'Eingabe falsch!'; end; IF (liMinute_b) > 60 then begin //liMinute_b --> Integer Windows.Beep(2000,250) ; ShowMessage ('Eingabe falsch! Der eingegebene Wert für die Minuten ist grösser 60!'); OutputC.text := 'Eingabe falsch!'; end; Vielen Dank vorab! Grüsse Jürgen |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
ganz einfach
Delphi-Quellcode:
damit prüfst du die zweite bedingung nur falls die erste nicht erfüllt ist
IF length (lsMinute_b) > 2 then
begin //lsMinute_b --> String Windows.Beep(2000,250) ; ShowMessage('Eingabe falsch! Die Anzahl der Stellen für die Minutenwerte hat mehr als 2 Stellen!'); OutputC.text := 'Eingabe falsch!'; end else IF (liMinute_b) > 60 then begin //liMinute_b --> Integer Windows.Beep(2000,250) ; ShowMessage ('Eingabe falsch! Der eingegebene Wert für die Minuten ist grösser 60!'); OutputC.text := 'Eingabe falsch!'; end; |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
Du kannst mehrere Bedingungen mittels or oder and verbinden:
Delphi-Quellcode:
[edit=Ups]Ich hatte leider übersehen, das da verschiedene Sachen gemacht werden sollten, sorry :-([/edit]
IF (length (lsMinute_b) > 2) or (liMinute_b > 60) then begin //lsMinute_b --> String
Windows.Beep(2000,250) ; ShowMessage ('Eingabe falsch! Die Anzahl der Stellen für die Minutenwerte hat mehr als 2 Stellen!'); OutputC.text := 'Eingabe falsch!'; end; |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
@benjamin: so stimmt aber die fehlermeldung nicht mehr...
|
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
Delphi-Quellcode:
//edit Wo war die rote Warnmeldung? :|
if (length(lsMinute_b) > 2) or ((liMinute_b) > 60) then
begin Windows.Beep(2000,250); if length(lsMinute_b) > 2 then ShowMessage('Eingabe falsch! Die Anzahl der Stellen für die Minutenwerte hat mehr als 2 Stellen!'); if liMinute_b > 60 then ShowMessage('Eingabe falsch! Der eingegebene Wert für die Minuten ist grösser 60!'); OutputC.text := 'Eingabe falsch!'; end; |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
vielen Dank für die schnelle Hilfe!
@ SirThornberry --> genauso wollte ich es haben. Allen ein schönes Wochenende! Grüsse Jürgen |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
Moin Jürgen,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Fehlermeldungen schön und gut, aber warum verhinderst Du nicht einfach, dass falsche Eingaben gemacht werden können? |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
Delphi-Quellcode:
Auf Grund der Bedingungen nehme ich an, dass es auch eine Eingabe für Stunden gibt!?
if (length(lsMinute_b) > 2) or ((liMinute_b) > 60) then
... Dann möchte ich darauf hinweisen, dass eine Stunde zwar 60 Minuten hat, aber in der Zeitangabe nur ganzzahlige Werte angegeben werden. Ein Minutenwert 60 ist eine Stunde und wird mit 1:00 angegeben. Alternativ könnte man über das OnKeyPress-Ereignis des Edits die Eingabe sofort auswerten. Zum Beispiel bei Länge 0 (leeres Eingabefeld) nur die Ziffern 0 bis 5 zulassen und alle anderen Eingaben sind wirkungslos. Bei Länge 1 sind dann Rückschritt (Löschen 1. Ziffer) und die Ziffern 0..9 erlaubt und bei Länge 2 nur noch der Rückschritt. Eventuell kann man einen vorherigen Wert zwischenspeichern und über ESC wiederherstellen. |
Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag
@ Christian ,
danke für den Willkommensgruss! Ich habe schon ein OnKeyPress-Ereignis für alle möglichen Eingabefehler hinterlegt, muss aber die Eingabe "aufteilen" in Stundenwerte und Minutenwerte. Nur somit habe ich die Möglichkeit "völlig unabhängig" die 4 Grundrechnenarten weiter auszuführen. Mit meiner jetzigen Lösung bin ich nun eigentlich auch ganz zufrieden ;-) Interessant wäre höchstens noch, ob man überhaupt eine Meldung herausgeben muss. Im Moment bin ich noch der Ansicht, dass ich aufzeigen will WELCHER Eingabefehler vorliegt... @ Garfield, Du hast genau recht! Ich rechne mit Stunden und mit Minuten. Von daher ist der Wert "60" natürlich auch falsch. (es muss 59 sein) Dein Denkansatz für das OnKeyPress-Ereignis hört sich auch gut an. Vielleicht probier ich das mal über diese Methode. Grüsse Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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