![]() |
Delphi-Version: 5
Try-Except Hilfe
Ich hab eine Try Except Funktion, welche dafür sorgt, dass man in ein EditFeld keine Buchstaben eingeben kann. Jetz hab ich das Problem, dass man keine Negativen Zahlen eingeben kann. Kann mir villeicht jemand helfen oder eine bessere Alternative präsentieren.
Code:
procedure TForm1.ed_abst_Change(Sender: TObject);
BEGIN TRY f_abst := StrToFloat(ed_abst.Text); EXCEPT ed_abst.Text := ''; f_abst := 0; END; END; |
AW: Try-Except Hilfe
StrToFloat sollte negative Zahlen zulassen.
Oder willst du, daß man keine Negativen eingeben kann/darf? :gruebel: PS: wozu das Try-Except? ![]() ![]() Weißt du wie schwer sowas zu Debuggen ist? Ich hatte jetzt in unserem Programm (der Firma) 12 Jahre alten Code umgeändert, da beim Programmstart im Debugger hunderte Exceptions aufliefen ... durch sowas wie hier. |
AW: Try-Except Hilfe
Du könntest die Überprüfung "weniger strikt" gestalten. Also z.B. beim OnExit prüfen ob es eine Zahl ist, und wenn ja einen grünen Rahmen um das Feld (Signal: "OK") und wenn nicht dann einen roten Rahmen (aber den Text unverändert lassen) und ggf. den OK Button deaktivieren.
Die etwas nervigere Lösung wäre wohl, das OnExit nur zu erlauben, wenn eine gültige Zahl drinsteht. Dzu solltest du die Prüfung ins OnExit verlagern und dort bei fehlgeschlagner Prüfung den Fokus "zurückholen" und einen Warnton abspielen. Das ist dann zwar nicht nett aber du kannst relativ sicher sein, dass am Ende eine gültige Zahl drinsteht. @himi: In dieser Form nicht "einfach so" - weil wenn man mit dem Minus anfängt isses noch keine gültige Zahl und das Minus wird wieder gelöscht ;) |
AW: Try-Except Hilfe
AFAIK gab es in Delphi 5 weder TryStrToFloat noch StrToFloatDef.
|
AW: Try-Except Hilfe
Im onkeypress kannst Du sowas verwenden
Delphi-Quellcode:
if not (key in ['0'..'9',#8, '.', ',', '-' ]) then key := #0;
es werden nur zahlen 0-9, backspace, punkt, komma und minus zugelassen. so als Alternative alfold |
AW: Try-Except Hilfe
Zitat:
Code:
Die Lösung von
32098,32--43,32-44.3294.3-24
![]() |
AW: Try-Except Hilfe
Wie wäre es denn so (über das Leeren des Edits kann man sich ja streiten, aber das ist nicht meine Sache)?:
Delphi-Quellcode:
//Für ältere Delphis unelegant implementiert
function TryStrToFloat(const s: string; out Number: double): Boolean; begin try Number := StrToFloat(s); Result := true; except Result := false; end; end; procedure TForm5.Edit1Change(Sender: TObject); var Zahl: double; begin if (Sender is TEdit) and (TEdit(Sender).Text <> '') and (TEdit(Sender).Text <> '-') then if not TryStrToFloat(TEdit(Sender).Text, Zahl) then TEdit(Sender).Text := ''; end; |
AW: Try-Except Hilfe
Zitat:
> Daniel hat ja nicht auf mich gehört, und keine anderere Vorauswahl eingebaut. :? Solange eugene222 also nix anderes sagt, geh ich einfach davon aus, daß er nichts geziehlt angegeben hat. PS: Ein Eintrag im Profil hätte dieses jetzt aber klären können. |
AW: Try-Except Hilfe
Im Ausgangspost ist explizit Delphi 5 angegeben.
|
AW: Try-Except Hilfe
Ich war weg, hab jetzt kurz eure Beiträge kurz überflogen. Ich habe die Delphi Version 7. Ich werde das ändern. Es wird als Standart V. 5 angegeben. Ich habe das nicht bemerkt. Morgen werd ich die Beiträge nochmal durchlesen und es ausprobieren, da ich jetzt erstmal schlafen gehe.
Naja aber Danke für eure Hilfe bis jetzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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