AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei Fehlerverarbeitung

Ein Thema von DonnieDarko_02 · begonnen am 24. Jan 2009 · letzter Beitrag vom 24. Jan 2009
Antwort Antwort
DonnieDarko_02

Registriert seit: 20. Jan 2009
13 Beiträge
 
#1

Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 15:29
ich hab ein Editfeld, in das ein integer wert geschrieben werden soll, wird nun z.b. ein string eingegeben wird über showmessage fehlermeldung ausgegeben

Delphi-Quellcode:
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
       bevel4.Hide;
try aanzahl:=strtoint(edit4.Text)
except
begin showmessage('Das ist kein gültiger Wert');exit; end;
edit4.Hide;
radiogroup1.Show;
radiogroup1.setfocus;

aber wie kann ich, nachdem die message angezeigt wird, wieder an den anfang der prozedur zurückkehren, dass ein neuer wert eingegeben werden kann?
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 15:46
Zitat von DonnieDarko_02:
aber wie kann ich, nachdem die message angezeigt wird, wieder an den anfang der prozedur zurückkehren, dass ein neuer wert eingegeben werden kann?
du darfst das nicht mit der proceduralen Programmierung verwechseln.

deine Proc.
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);

wird jedesmal beim keypress von neuem aufgerufen.


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 17:49
Hallo...

versuchs mal damit:
Delphi-Quellcode:
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
var AllesOK: Boolean;
begin
 AllesOK:= True;
 if key=#13 then
   begin
     bevel4.Hide;
     try
       aanzahl:=strtoint(edit4.Text)
     except
       begin
         showmessage(Edit4.Text + ' ist kein gültiger Wert');
         Edit4.Text:= ''; // z.B. Feld löschen, oder du kannst an dieser Stelle alles markieren, wie du willst
         AllesOK:= False;
     end;
  if AllesOK then
    begin
      edit4.Hide;
      radiogroup1.Show;
      radiogroup1.setfocus;
    end;
  end;
end;
- Im Falle eines Fehlers wird AllesOK auf False gesetzt und Edit4 bleibt sichtbar.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 17:52
Ohne den try-except-Block fände ich es besser. Stattdessen könnte man TryStrToInt oder Val benutzen. Exception-Handling ist ja eher für Fehler gedacht, die unerwartet auftreten können (abgebrochene Netzwerkverbindungen, Hardwarefehler oder sowas).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 17:57
...bist aber heute wieder kleinlich...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 18:01
Ja nun, viele sehen try-except ja als Allheilmittel für alle möglichen Fehler an, das mag ich eben nicht
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 18:03
...weiß ich doch 8) Ich wollte nur nicht zu viel Durcheinander anrichten...des Verständnisses wegen

[edit]
...noch besser wäre es, erst gar keine ungültigen Zeichen zuzulassen. In diesem Falle nur Zahlen zulassen.
[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Problem bei Fehlerverarbeitung

  Alt 24. Jan 2009, 18:04
Try...except/finally sollte nur für nicht vorhersehbare Fehler verwendet werden. Meist gibt es Besseres ( z.B. Try<Typ>To<Typ>() oder <Typ>To<Typ>Def() statt <Typ>To<Typ>() )
Markus Kinzler
  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 19:57 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