AGB  ·  Datenschutz  ·  Impressum  







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

MaskEdit Gleitkommafehler

Ein Thema von MarcoGöli · begonnen am 28. Apr 2015 · letzter Beitrag vom 28. Apr 2015
Antwort Antwort
Seite 1 von 2  1 2      
MarcoGöli

Registriert seit: 20. Jan 2015
Ort: Schweiz, Luzern
17 Beiträge
 
Delphi XE7 Professional
 
#1

MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 10:40
Hallo Community

Ich hab in Delphi ein MaskEdit eingefügt, in welchem positive wie negative Zahlen eingefügt werden können. Dies klappt auch ohne Fehlermeldung. Nun wenn ich im OnChange des MaskEdits nur von -400 bis +400 die Eingabe prüfe, dann wird erscheint immer die Fehlermeldung: ' ' ist kein gültiger Gleitkommawert.

Code:
procedure TForm9.MaskEdit1Change(Sender: TObject);
begin
  if (StrToFloat(MaskEdit1.Text) < -400) or (StrToFloat(MaskEdit1.Text) > 400) or (MaskEdit1.Text = '') then
  MaskEdit1.Text := '0';
  Edit1.Text := MaskEdit1.Text;
end;
Vielleicht weis einer von euch was da schief ist.
Marco
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 10:46
or (MaskEdit1.Text = '') als Letztes ... Was wird StrToFloat wohl machen, wenn es vorher auf den '' trifft?
Außerdem gibt es noch viel mehr "ungültige" Strings, als nur den '' .

PS: Delphi-Referenz durchsuchenStrToFloatDef oder Delphi-Referenz durchsuchenTryStrToFloat
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
MarcoGöli

Registriert seit: 20. Jan 2015
Ort: Schweiz, Luzern
17 Beiträge
 
Delphi XE7 Professional
 
#3

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 15:01
hallo himitsu

Mit TryStrToFloat und StrToFloatDef zeigt mir Delphi immer einen Fehler an beim Debuggen.

In OnCreate der Form habe ich:

Code:
  FormatSettings.DecimalSeparator := '.';
  Application.UpdateFormatSettings := false;
Marco
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 15:08
Was zeigt Delphi denn für einen Fehler beim Debuggen?
  Mit Zitat antworten Zitat
MarcoGöli

Registriert seit: 20. Jan 2015
Ort: Schweiz, Luzern
17 Beiträge
 
Delphi XE7 Professional
 
#5

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 15:19
Wenn ich im OnChange folgendes eintrage:

Code:
procedure TForm9.MaskEdit1Change(Sender: TObject);

begin
  if (StrToFloatDef(MaskEdit1.Text) < -400) or (StrToFloatDef(MaskEdit1.Text) > 400) or (MaskEdit1.Text = '') then
  MaskEdit1.Text := '0';
  Edit1.Text := MaskEdit1.Text;
end;
Dann schreibt mir Delphi:

[dcc64 Fehler] ueinstellungkopfzeile.pas(160): E2250 Es gibt keine überladene Version von 'StrToFloatDef', die man mit diesen Argumenten aufrufen kann
Marco
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 15:21
Delphi-Referenz durchsuchenStrToFloatDef
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
MarcoGöli

Registriert seit: 20. Jan 2015
Ort: Schweiz, Luzern
17 Beiträge
 
Delphi XE7 Professional
 
#7

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 16:02
Den DecimalSeparator Punkt benötige ich für ein anderes Editfeld. Im Oi habe ich unter MaskEdit "#999', womit ein minus oder plus an erster Stelle stehen kann. Ansonsten können nur Zahlen ein gegeben werden. Deshalb begreife ich das mit dem StrToFloatDef nicht ganz. Soviel Erfahrung mit Delphi habe ich nun auch noch nicht.
Marco
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 16:10
Die Mask '#999' erlaubt aber auch einen Leerstring, vorallem beim Bearbeiten, genauso wie man auf nur '-' dort eingetragen haben kann.

Aber warum dann Float, wo dort doch nur Int vorkommen kann?

Delphi-Quellcode:
  FormatSettings.DecimalSeparator := '.';
  Application.UpdateFormatSettings := false;
Dafür haben FloatToStr, StrToFloat und TryStrToFloat einen zweiten, bzw. StrToFloatDef einen dritten Parameter.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Apr 2015 um 16:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 16:11
StrToFloatDef erwartet mindestens 2 Parameter: den umzuwandelnden String und einen Standardwert, der dann genommen wird, wenn die Umwandlung nicht möglich ist. Daher kann der Compiler mit
Zitat:
StrToFloatDef(MaskEdit1.Text)
nichts anfangen, da kein Standardwert angegeben wurde.
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
MarcoGöli

Registriert seit: 20. Jan 2015
Ort: Schweiz, Luzern
17 Beiträge
 
Delphi XE7 Professional
 
#10

AW: MaskEdit Gleitkommafehler

  Alt 28. Apr 2015, 16:24
Float hab ich genommen, weil ein minus oder pluszeichen an erster Stelle steht.
Heisst ich müsste die Leerzeichen mittels StringReplace löschen oder mit der Trim Funktion, jedoch bleibt auch dabei der Fehler bestehen.
Marco
  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 07:25 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