AGB  ·  Datenschutz  ·  Impressum  







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

Try-Except Hilfe

Ein Thema von eugene222 · begonnen am 25. Mär 2011 · letzter Beitrag vom 26. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
eugene222

Registriert seit: 24. Mär 2011
11 Beiträge
 
#1

Try-Except Hilfe

  Alt 25. Mär 2011, 15:39
Delphi-Version: 5
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 15:44
StrToFloat sollte negative Zahlen zulassen.
Oder willst du, daß man keine Negativen eingeben kann/darf?



PS: wozu das Try-Except?
Delphi-Referenz durchsuchenTryStrToFloat oder Delphi-Referenz durchsuchenStrToFloatDef wurden nicht umsonst erfunden.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 15:46
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 15:48
AFAIK gab es in Delphi 5 weder TryStrToFloat noch StrToFloatDef.
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
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 16:01
Im onkeypress kannst Du sowas verwenden
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
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 16:10
Im onkeypress kannst Du sowas verwenden
if not (key in ['0'..'9',#8, '.', ',', '-' ]) then key := #0;
Dann gehen aber auch Eingaben wie
Code:
32098,32--43,32-44.3294.3-24
Die Lösung von jfheins würde ich bevorzugen, allerdings ließe sich das ja auch kombinieren.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 16:22
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;
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 himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 19:18
AFAIK gab es in Delphi 5 weder TryStrToFloat noch StrToFloatDef.
Ob der TE wirklich D5 verwendet, sei mal dahingestellt, denn D5 ist hier Standard, also steht immer dann da, wenn man da nix angegeben hat.

> 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 19:37
Im Ausgangspost ist explizit Delphi 5 angegeben.
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
eugene222

Registriert seit: 24. Mär 2011
11 Beiträge
 
#10

AW: Try-Except Hilfe

  Alt 25. Mär 2011, 21:20
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:29 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