![]() |
Absturz verhindern/ ich krieg das mit except net gebacken
Hallo,
ist zwar mit hoher wahrscheinlichkeit eine noob-frage(was delphi abgeht bin ich auch einer), aber ich kriegs net hin, zu verhindern, dass das Programm abstürzt, wenn ein String in integer oder so umgewandelt werden soll, in dem String jedoch Buchstaben vorhanden sind. Ich hab es schonmal mit Except in einer Fuktion und einfach so ausprobiert, ging aber net. so hab ichs gemacht:
Delphi-Quellcode:
Dann stürzt das Programm aber ab, wenn eine Nicht-Zahl im String enthalten ist, obwohl das doch eigentlich mit dem except übergangen werden müsste, oder`````?
//hier die Funktion
function ZahlOderNicht(const test: string): Boolean; begin Result := True; try StrToFloat(test); except Result := False; end; end; //und dann in einer Prozedur: if ZahlOderNicht(EdtEinzahlung.text) = true then showmessage('Zahl') else showmessage ('Keine Zahl'); |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Hallo,
in der IDE wird der Fehler trotzdem ausgelöst (mit F9 gehts weiter), in der EXE nicht. MfG Thorsten |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Moin vogael,
in der IDE kannst Du es unterdrücken über Tools\Debugger Options Tab: Language Exceptions CheckBox: Stop on Delphi-Exceptions (tut mir leid, aber ich habe da nur die Angaben der englischen Version) Ist die Checkbox aktiviert (das ist die Standardeinstellung) passiert das, was Du beschrieben hast, ist sie deaktiviert, verhält sich das Programm in der IDE so wie ausserhalb. Je nach Delphi-Version hast Du übrigens eventuell auch die Funktion TryStrToFloat zur Verfügung. Damit könntest Du Dir dann die try/except-Konstruktion ersparen. |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Bei Delphi 6 musst du unter Tolls/Debugger Optionen die Checkbos "Integrierte Fehlersuche" abschalten.
Unter Dlphi 2005 musst du unter Tools/Optionen auf das Register Debugger und dann auf Integrietes Debuggen klicken. Hoffe das war das was du brauchst! |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Es fehlt auch die eigentliche Fehlerroutine.
Delphi-Quellcode:
function ZahlOderNicht(const test: string): Boolean;
begin Result := True; try StrToFloat(test); except on Exception do Result := False; end; end; //und dann in einer Prozedur: if ZahlOderNicht(EdtEinzahlung.text) = true then showmessage('Zahl') else showmessage ('Keine Zahl'); |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Hallo,
Zitat:
Gruß xaromz |
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Weil du dem Compiler sagen mußt welchen Fehler du abgefangen hast. Wenn du alle Fehler abfangen willst mußt du es so machen wie ich in dem Beispiel weiter oben. Sonst nach dem on die abzufangenede Exception angeben.
|
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Zitat:
|
Re: Absturz verhindern/ ich krieg das mit except net gebacke
vielen Dank, war ja net son Müll den ich da hatte :-D
|
Re: Absturz verhindern/ ich krieg das mit except net gebacke
Zahlen kann man auch auf eine andere Art herausbekommen:
Delphi-Quellcode:
ich hoffe, das hilft ;-)
function ZahlOderNicht(const test: string): Boolean;
var i_zahl, i_fehler : integer begin Result := True; val ( test, i_zahl, i_fehler ); // i_fehler ist 0, wenn es eine Zahl ist, // ansonsten die erste Stelle, die keine Ziffer ist Result := i_fehler=0; // Du kannst also auch noch folgendes machen: if i_fehler > 1 then begin val(copy(test,1,i_fehler-1), i_zahl, i_fehler ); // jetzt hast Du die Zahl bis zum ersten Fehler.... end; end; Grüßchens, Hans |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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