AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Eingabefehler mit try except abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Eingabefehler mit try except abfangen

Ein Thema von Teesäufer · begonnen am 3. Sep 2022 · letzter Beitrag vom 4. Sep 2022
Antwort Antwort
Teesäufer

Registriert seit: 10. Jan 2021
18 Beiträge
 
#1

Eingabefehler mit try except abfangen

  Alt 3. Sep 2022, 23:45
Hallo zusammen,

ich habe ein Problem: Ich habe ein Eingabefeld, bei dem man eine Zahl eingeben soll. Nun kommt es ja aber manchmal vor, dass man sich vertippt und versehentlich einen Text eingibt. Darum habe ich das in try except eingebettet. Nur leider hilft es nichts. So sieht das ganze aus:

try
ergebnis:=strtoint(Edit1.text);
except
label4.caption:='Fehlerhafte Eingabe'+ergebnistext;
end;

Trotzdem bricht das Programm mit einer Fehlermeldung ab, wenn ich einen Text eingebe. Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 00:18
Was mache ich falsch?
Noch etwas Anderes?

Was soll ergebnis im Except für einen Wert haben?
Sagt dir der Compiler denn nichts vonwegen "nicht initialisierte Variable"? Wenn doch, warum hörst du nicht auf ihn?

Was ist ergebnistext?

Und was heißt "bricht ab"?


Außerdem wird dir jeder zu Recht den A versohlen, wenn er beim Debuggen auf diesen Code stößt.
Delphi-Referenz durchsuchenTryStrToInt
Delphi-Referenz durchsuchenStrToIntDef
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Sep 2022 um 00:21 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 01:09
Hallo zusammen,

ich habe ein Problem: Ich habe ein Eingabefeld, bei dem man eine Zahl eingeben soll. Nun kommt es ja aber manchmal vor, dass man sich vertippt und versehentlich einen Text eingibt. Darum habe ich das in try except eingebettet. Nur leider hilft es nichts. So sieht das ganze aus:

try
ergebnis:=strtoint(Edit1.text);
except
label4.caption:='Fehlerhafte Eingabe'+ergebnistext;
end;

Trotzdem bricht das Programm mit einer Fehlermeldung ab, wenn ich einen Text eingebe. Was mache ich falsch?
except
on E:Exception do label4.caption:='Fehlerhafte Eingabe'+ergebnistext;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 05:12
Das ist egal, so lange E eh nicht verwendet wird.



Nur unter einer Annahme verhält es sich mit und ohne ON unterschiedlich.
Wenn E nicht als "Exception" deklariert ist,
bzw. wenn die "Exception" kein Exception-Objekt ist. (rein theoretisch möglich, da Exceptions kein Exception-Typ sein müssen, aber grundsätzlich sind sie es eigentlich immer)



Ach ja, der Grund für die Popo-Haue ist hier nicht,
dass die "eigentliche" Exception vernichtet und durch einen anderen Text ersetzt wird, aber nur weil es hier unter normalen Umständen nur eine Exception gibt, welche in etwa mit dem neun Text übereinstimmt.

Der Grund ist aber, dass hier eine sinnlose Exception als Prozessführtung benutzt wird,
also bösartig der Debugger angehalten wird, obwohl es genügend "ordentliche" Alternativen gibt. (selbst das uralte Delphi-Referenz durchsuchenVal)
Exceptions sind Ausnahmen und kein Nomalverhalten.

Ich hab es schon erlebt, dass jemand sowas in einem OnPaint gemacht hat. Das macht im Debugger echt keinen Spaß und endet quasi in einer Endlosschleife.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Sep 2022 um 05:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 06:59
Nun kommt es ja aber manchmal vor, dass man sich vertippt und versehentlich einen Text eingibt.
Nicht, wenn du NumbersOnly bei dem Edit im Objektinspektor auf True setzt.

Ach ja, und MaxLength solltest du auch noch setzen, damit keine zu großen Zahlen eingegeben werden können.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 4. Sep 2022 um 07:02 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#6

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 09:48
Oder TMaskEdit verwenden und dort eine passende Maske für die Eingabe hinterlegen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 16:26
Windows/VCL hat nachgebessert.

Via Kopieren (Tastatur oder Menü) bekommt man nicht s Falsche mehr rein,
aber Programmseitig via Edit.Text:='abc', WN_SETTEXT usw. ist es aber denoch möglich. (z.B. beim Laden/Wiederherstellen der letzten Eingaben oder die Vorgabe aus der DFM)

Im FMX kann man bei der TNumberBox erstmals was Falsches eingeben/kopieren, aber im OnExit wird der Wert erst validiert und nur wenn gültig übernommen oder verworfen.


Also eine Prüfung im Code ist so oder so immer sicherheitshalber nötig.
Ja, während der Eingabe ist es natürlich nicht verkehrt, auch wenn es dort nicht immer zu 100% sicher ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.603 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 18:28
Trotzdem bricht das Programm mit einer Fehlermeldung ab, wenn ich einen Text eingebe. Was mache ich falsch?

Glaskugel raushol:
Die Fehlermeldung kommt, wenn Du das Programm im Debugger laufen lässt?

Das ist normal, denn normalerweise will man solche Fehler im Debugger sehen. Dafür gibt es dann in diesem Dialog die Option die Execption zu ignoriren.

Wenn das Programm normal gestartet wird (also z.B. durch Doppelklick auf das Executable, greift der Exception-Handler und die Fehlermeldung (als Dialog) wird nicht angezeigt.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#9

AW: Eingabefehler mit try except abfangen

  Alt 4. Sep 2022, 20:57
Hier will niemand eine Exception sehen, also ist es wiedersinnig überhaupt Welche auszulösen und somit gibt es keinen Grund diesen Exception-Typ grundsätzlich programmweit auszublenden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 04:54 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