![]() |
Fehlermeldung umgehen
Hallo
Mir ist jetzt noch ein zweites Problem lästig geworden.Wenn ich ein Programm starte, dass ein Edit Feld beinhaltet, welches ausgelesen wird, aber keine Zahlen enthält, kommt immer eine Fehlermeldung und ich muss Delphi über den Taskmanager beenden. Hab dafür eigentlich eine if Anweisung geschrieben, aber die zeigt er mir gar nicht. Sie sieht so aus und steht vor dem ganzen anderen Zeug:
Delphi-Quellcode:
Ich hab dieses Programm auch mal über die erzeugte Anwendung gestartet und da bringt er, dass ein ungültiger Gleitkommawert vorliegt.
if edit1.text=' ' then begin
messageDlg('Leider kein Gewicht eingegeben. Programm wird beendet.',mtwarning,[mbok],0); close; end; |
Re: Fehlermeldung umgehen
Hallo,
versuch doch in einem try-except-end - Block. Bei einem Fehler kann du dann entsprechend reagieren.
Delphi-Quellcode:
Viel Spaß damit
procedure tform1.checkEdit1;
var iWert : Integer; begin try if edit1.text > '' then begin iWert := strtoint (edit1.text); end else begin tue etwas anderes ..... end; except on e : exception do begin showMessage ('Fehler bei der Eingabe'+#13#10+e.message); end; end; end; Gruß 1aDavin :lol: |
Re: Fehlermeldung umgehen
Vergiss den try-except-Block und mach das Leerzeichen zwischen den Hochkommas raus.
|
Re: Fehlermeldung umgehen
und was ist bei einer alpha-nummerischen eingabe, die nicht ok ist ?
:cry: |
Re: Fehlermeldung umgehen
Das Entfernen des Leerzeichens zwischen den Hochkommern hat auch nichts gebracht. Ich werd dann wohl mal das mit der anderen Methode versuchen.
|
Re: Fehlermeldung umgehen
Mit Val (-> Hilfe) umwandeln und den dritten Parameter auf null prüfen, dann weißt du, ob es geklappt hat oder nicht.
|
Re: Fehlermeldung umgehen
Zitat:
Delphi-Quellcode:
Oder
if Edit1.Text = '' then
ShowMessage('Edit leer.');
Delphi-Quellcode:
if length(Edit1.Text) = 0 then
ShowMessage('Edit leer.'); |
Re: Fehlermeldung umgehen
Hallo,
ich habe das selbe Problem und weiß im Moment nicht mehr weiter: Nach der Prüfung des Edit1 Feldes erscheint die Nachricht, dass das Feld leer ist und danach nochmal die Warnung: Zitat:
MfG Arne :) |
Re: Fehlermeldung umgehen
hast du etwa
Delphi-Quellcode:
geschrieben??
length(Edit1.Text) = ''
im übrigen sind das '' zwei einzelne hochkommas und nicht ein anführungszeichen (")... |
Re: Fehlermeldung umgehen
Nein, ich habe das andere Beispiel verwendet:
Code:
MfG Arne :)
Edit1.Text = ''
PS: Vielen dank für den Hinweis mit den Hochkommatas. :) |
Re: Fehlermeldung umgehen
Ich würd es somachen:
Delphi-Quellcode:
Damit umgeht man garantiert der fehlermedlung!
If edit.text = ''
then begin MessageDlg(...); end else begin {Was passieren soll, wenn das Edit nicht leer ist} end; |
Re: Fehlermeldung umgehen
oder
Delphi-Quellcode:
geht auch mit TryStrToFloat
if not TryStrToInt(Edit1.Text, OutPutVariable) then
//Fehler |
Re: Fehlermeldung umgehen
Ganz getreu dem Moto:
In der Kürze leigt die Würze! |
Re: Fehlermeldung umgehen
1. denk ich, dass die try-except geschichte wirklich die elegantere lösung is,
2. stimmt auch das mit dem Edit1.Text = '' als Abfrage und 3. (bei delphi7) Tools - DebuggerOptionen - SprachExceptions --> das Häkchen bei "bei DelphiExceptions stoppen" wegmachen, dann zeigt er auch keine lästigen Fehlermeldungen wie "'' ist kein gültiger Integerwert" mehr ;) |
Re: Fehlermeldung umgehen
1. Ist es nicht. Exceptions sind dazu da unbehandelte ausnahme Fehler zu bearbeiten.
2. ... 3. Das ist die schlechteste aller Lösungen, da dann auch alle anderen Exceptions nicht mehr greifen und man dann eventuelle Fehler nicht entdeckt. |
Re: Fehlermeldung umgehen
1. und eine solche unbehandelte exception wäre zB eine fehlerhafte eingabe eines users (zB string in ein feld das integer erwartet) .. also _ich_ hätte keine lust alle möglichen fehlerquellen eines anwenders von vornherein im programm auszzprogrammiern
2. ;) 3. nun ja, jedem das seine .. ich nehms meistens raus, weil es mir schon öfter passiert is das ich mir bei fehlerbehandlungs-routinen - sowohl try-except als auch if-then-else - nen wolf programmiert hab, bis ich gemerkt hab, das meine routine zwar einsetzt, aber delphi das programm auf grund einer exception schon vorher abschießt .. |
Re: Fehlermeldung umgehen
Und eine sloche, deiner Meinung nach, unbehandlete Exception kan man umgehen in dem man entwedre nur gültige Zeichen zu lässt oder eben, wie hier, mit val arbeitet. Jeder try-except-Block generiert im Code tausende von Taktzyklen für die CPU mehr.
|
Re: Fehlermeldung umgehen
also für dieses "nur gültige werte zulassen" kannte ich eben nur die methode alle möglichen eventuell fehlerhaften eingaben des anwenders vorher auszuprogrammiern ..
jedoch muss ich zugeben das mir die methode mit val neu ist .. werd ich mich mal n bissl reinlesen, danke für den tip :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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