Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Minuszeichen abfangen? (https://www.delphipraxis.net/54585-minuszeichen-abfangen.html)

Tau 7. Okt 2005 00:46


Minuszeichen abfangen?
 
Hi zusammen

Ich glaub ich stehe momentan am schlauch. habe schon einiges :oops:
gesucht aber leider kein vernünftige Lösung gefunden.

Ich versuche gerade im onChange von einem TEdit

StrToFloat(TEdit(Sender).Text) umzuwandeln.

beim eingaben von einem Minuszeichen kommt logischerweise der Fehler.
Ist ja noch kein Gleitkomma Wert.

Solte aber nicht in einer anderen Procedur sein
( OnKeyPress oder so sondern nur im onChange )

Wie kann ich das verhindern? :gruebel:

Tau
:hi:

Grishnak 7. Okt 2005 00:50

Re: Minuszeichen abfangen?
 
1. Fehlermeldung mit try...finally abfangen und Wert auf 0.0 setzten, oder
2. Prüfungen erst bei vollständiger Eingabe vornehmen (OnExit)

Tau 7. Okt 2005 01:12

Re: Minuszeichen abfangen?
 
Hallo Grishnak

1) try...finally ist glaube ich nicht das gelbe vom ei es muss noch besser Lösungen geben.

2)
Zitat:

( OnKeyPress oder so sondern nur im onChange )
wer lesen kann ist klar im Vorteil!

Der Grund ist das ich diese Lösung auch für ein bar andere fälle brauchen würde.

Hatte auch schon mal was im Forum gefunden aber kann es leider nicht mehr finden.

Tau
:hi:

ripper8472 7. Okt 2005 01:14

Re: Minuszeichen abfangen?
 
strtofloatdef koennte es eventuell geben

Tau 7. Okt 2005 01:21

Re: Minuszeichen abfangen?
 
Die Exeption wird trotzdem ausgelöst

Tau
:hi:

Luckie 7. Okt 2005 01:48

Re: Minuszeichen abfangen?
 
Zitat:

Zitat von Tau
Die Exeption wird trotzdem ausgelöst

Auch außerhalb der IDE?

ripper8472 7. Okt 2005 02:59

Re: Minuszeichen abfangen?
 
strtofloatdef hat bisher immer funktioniert.
wenns immernoch crasht, dann liegts aber nicht an strtofloatdef.

Der_Unwissende 7. Okt 2005 06:43

Re: Minuszeichen abfangen?
 
Hi,
auch wenn es nicht weit vom try ... except weg liegt (das eh für falsche Eingaben drum rum sollte), schau dir doch einfach den gesetzten Wert direkt an. Also beim OnChange mal was wie
Delphi-Quellcode:
if self.EditDasMichInteressiert.Text = '-' then
  begin
    exit;
  end; // if self.EditDasDichInteressiert.Text = '-'
try
  self.DeinFloatValue := StrToFloat(self.EditDasDichInteressiert.Text);
except
 // oops
end;

ripper8472 7. Okt 2005 06:59

Re: Minuszeichen abfangen?
 
strtofloatdef() versteht auch minuszeichen.

loest euch mal von den try-excepts, wenn die funktionen das selber schon ordentlich behandeln.

chrisw 7. Okt 2005 07:18

Re: Minuszeichen abfangen?
 
wie wäre es mit "TryStrToFloat", das versteht optional auch + und - und gibt eine exception, falls doch etwas anderes als Ziffern eingegeben werden .


Chris

SirThornberry 7. Okt 2005 07:23

Re: Minuszeichen abfangen?
 
@ripper8472: strtofloatdef hat aber doch den Nachteil das man nicht weiß ob es geklappt hat oder nicht da man ja im Fehlerfall den Defaultwert bekommt. Aber es kann ja auch sein das man den Defaultwert bekommt wenn alles klappt. Ich finde es nicht ganz so toll wenn man einfach dann mit einem Defaultwert rechnet und der User sich über das Ergebnis wundert, es ist einfach besser wenn man den user auf seine Fehleingabe hinweisen kann. Und wie schon jemand vor mir geschrieben hat kann man auch einfach vor dem StrToFloat prüfen ob das Edit aus mehr als einem Minuszeischen besteht.
Delphi-Quellcode:
if TEdit(Sender) <> '-' then
  Variable := StrToFloat(TEdit(Sender).Text);

runger 7. Okt 2005 07:25

Re: Minuszeichen abfangen?
 
Hallo,

du darfst das "-" Zeichen sowieso nur einmal zulassen und das am Anfang.
Schau nach ob das "-" das einzige Zeichen ist, wenn das so ist lässt du die Umwandlung und tust einfach so als stände nichts im Edit-Feld.

Rainer

runger 7. Okt 2005 07:27

Re: Minuszeichen abfangen?
 
Sorry,

aber Thornberry hatte gleichzeitig mit mir die gleiche Idee.

Rainer

Grishnak 7. Okt 2005 07:53

Re: Minuszeichen abfangen?
 
@Tau: 'try...finally' war Quatsch, ich meinte 'try...except'! Außerdem kann ich lesen, aber wenn es mit dem Kopf durch die Wand nicht geht, muss man halt auch mal einen anderen Weg beschreiten! Kein Grund unfreundlich zu werden!

tigerman33 7. Okt 2005 13:33

Re: Minuszeichen abfangen?
 
Zitat:

Zitat von SirThornberry
if TEdit(Sender) <> '-'

Da bin ich aber mal gespannt... :wink:

Hawky 7. Okt 2005 14:13

Re: Minuszeichen abfangen?
 
das Abfragen beim ersten Zeichen ungleich - bringt doch nix, wenn jemand zwischendurch nen Buchstaben eingibt oder zwischendrin nen - krachts trotzdem.

also ich wuerde trystrtofloat nehmen, da wiesst du ob alles ok war und wenn nicht kannst du reagieren

Tau 8. Okt 2005 05:09

Re: Minuszeichen abfangen?
 
Hallo zusammen

@ SirThornberry

das ist genau der richtige Ansatz für mich.

D A N K E :witch: :witch: :witch:

auch den anderen besten danke für die Interessanten Ansätze.

Tau
:hi:

yankee 8. Okt 2005 06:04

Re: Minuszeichen abfangen?
 
Generell hat auch jvcl schon was passendes dafür: TJvFloatEdit. Unter Jv Convert. (Kann sein, dass das in JVCL 3 anders heißt...). Damit kann man sich das alles sparen und man hat neben .text noch .value, was gleich der Floatwert ist...
Selbst was von TCostumEdit ableiten ist auch nicht wirklich schwer...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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