AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi 2 Bedingungen unterschiedlicher Typen in einer IF Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

2 Bedingungen unterschiedlicher Typen in einer IF Abfrage

Ein Thema von juergen · begonnen am 9. Apr 2005 · letzter Beitrag vom 9. Apr 2005
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

2 Bedingungen unterschiedlicher Typen in einer IF Abfrage

  Alt 9. Apr 2005, 11:48
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
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 11:51
ganz einfach
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
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;
damit prüfst du die zweite bedingung nur falls die erste nicht erfüllt ist
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 11:51
Du kannst mehrere Bedingungen mittels or oder and verbinden:
Delphi-Quellcode:
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;
[edit=Ups]Ich hatte leider übersehen, das da verschiedene Sachen gemacht werden sollten, sorry [/edit]
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 11:52
@benjamin: so stimmt aber die fehlermeldung nicht mehr...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 11:52
Delphi-Quellcode:
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;
//edit Wo war die rote Warnmeldung?
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 12:12
vielen Dank für die schnelle Hilfe!
@ SirThornberry --> genauso wollte ich es haben.

Allen ein schönes Wochenende!

Grüsse
Jürgen
Jürgen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 13:09
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?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#8

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 13:27
Delphi-Quellcode:
if (length(lsMinute_b) > 2) or ((liMinute_b) > 60) then
...
Auf Grund der Bedingungen nehme ich an, dass es auch eine Eingabe für Stunden gibt!?

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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: 2 Bedingungen unterschiedlicher Typen in einer IF Abfrag

  Alt 9. Apr 2005, 15:35
@ 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
Jürgen
  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 01:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz