Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung umgehen (https://www.delphipraxis.net/14735-fehlermeldung-umgehen.html)

derhoeppi 14. Jan 2004 18:24


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:
if edit1.text=' ' then begin
     messageDlg('Leider kein Gewicht eingegeben. Programm wird beendet.',mtwarning,[mbok],0);
     close;
    end;
Ich hab dieses Programm auch mal über die erzeugte Anwendung gestartet und da bringt er, dass ein ungültiger Gleitkommawert vorliegt.

1adavin 14. Jan 2004 18:33

Re: Fehlermeldung umgehen
 
Hallo,

versuch doch in einem try-except-end - Block.
Bei einem Fehler kann du dann entsprechend reagieren.

Delphi-Quellcode:
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;
Viel Spaß damit

Gruß

1aDavin :lol:

Luckie 14. Jan 2004 18:35

Re: Fehlermeldung umgehen
 
Vergiss den try-except-Block und mach das Leerzeichen zwischen den Hochkommas raus.

1adavin 14. Jan 2004 18:37

Re: Fehlermeldung umgehen
 
und was ist bei einer alpha-nummerischen eingabe, die nicht ok ist ?

:cry:

derhoeppi 14. Jan 2004 18:43

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.

Luckie 14. Jan 2004 18:43

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.

Luckie 14. Jan 2004 18:46

Re: Fehlermeldung umgehen
 
Zitat:

Zitat von derhoeppi
Das Entfernen des Leerzeichens zwischen den Hochkommern hat auch nichts gebracht. Ich werd dann wohl mal das mit der anderen Methode versuchen.

Das kan nicht sein. Ob ein Edit leer ist oder nicht überprüft man so:
Delphi-Quellcode:
if Edit1.Text = '' then
  ShowMessage('Edit leer.');
Oder
Delphi-Quellcode:
if length(Edit1.Text) = 0 then
  ShowMessage('Edit leer.');

Arne Kamola 1. Mai 2004 12:50

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:

" ist kein gültiger Integerwert
Kann man irgendwie verhindern das diese Nachricht erscheint? Ich kann mir vorstellen, das es die Benutzer irritiert.

MfG Arne :)

faux 1. Mai 2004 12:53

Re: Fehlermeldung umgehen
 
hast du etwa
Delphi-Quellcode:
length(Edit1.Text) = ''
geschrieben??

im übrigen sind das '' zwei einzelne hochkommas und nicht ein anführungszeichen (")...

Arne Kamola 1. Mai 2004 12:56

Re: Fehlermeldung umgehen
 
Nein, ich habe das andere Beispiel verwendet:
Code:
Edit1.Text = ''
MfG Arne :)

PS: Vielen dank für den Hinweis mit den Hochkommatas. :)

daniel8520 1. Mai 2004 19:07

Re: Fehlermeldung umgehen
 
Ich würd es somachen:
Delphi-Quellcode:
If edit.text = ''
then
begin
  MessageDlg(...);
end
else
begin
  {Was passieren soll, wenn das Edit nicht leer ist}
end;
Damit umgeht man garantiert der fehlermedlung!

Skiron 1. Mai 2004 19:24

Re: Fehlermeldung umgehen
 
oder
Delphi-Quellcode:
  if not TryStrToInt(Edit1.Text, OutPutVariable) then
    //Fehler
geht auch mit TryStrToFloat

daniel8520 1. Mai 2004 19:26

Re: Fehlermeldung umgehen
 
Ganz getreu dem Moto:
In der Kürze leigt die Würze!

eroe 15. Mai 2004 13:24

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 ;)

Luckie 15. Mai 2004 14:10

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.

eroe 15. Mai 2004 14:22

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 ..

Luckie 15. Mai 2004 14:31

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.

eroe 15. Mai 2004 14:53

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