Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   MaskEdit Gleitkommafehler (https://www.delphipraxis.net/184887-maskedit-gleitkommafehler.html)

MarcoGöli 28. Apr 2015 09:40

MaskEdit Gleitkommafehler
 
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.

himitsu 28. Apr 2015 09:46

AW: MaskEdit Gleitkommafehler
 
Delphi-Quellcode:
or (MaskEdit1.Text = '')
als Letztes ... Was wird StrToFloat wohl machen, wenn es vorher auf den
Delphi-Quellcode:
''
trifft? :roll:
Außerdem gibt es noch viel mehr "ungültige" Strings, als nur den
Delphi-Quellcode:
''
.

PS: Delphi-Referenz durchsuchenStrToFloatDef oder Delphi-Referenz durchsuchenTryStrToFloat

MarcoGöli 28. Apr 2015 14:01

AW: MaskEdit Gleitkommafehler
 
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;

Dejan Vu 28. Apr 2015 14:08

AW: MaskEdit Gleitkommafehler
 
Was zeigt Delphi denn für einen Fehler beim Debuggen?

MarcoGöli 28. Apr 2015 14:19

AW: MaskEdit Gleitkommafehler
 
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

DeddyH 28. Apr 2015 14:21

AW: MaskEdit Gleitkommafehler
 
Delphi-Referenz durchsuchenStrToFloatDef

MarcoGöli 28. Apr 2015 15:02

AW: MaskEdit Gleitkommafehler
 
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.

himitsu 28. Apr 2015 15:10

AW: MaskEdit Gleitkommafehler
 
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.

DeddyH 28. Apr 2015 15:11

AW: MaskEdit Gleitkommafehler
 
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:

Delphi-Quellcode:
StrToFloatDef(MaskEdit1.Text)

nichts anfangen, da kein Standardwert angegeben wurde.

MarcoGöli 28. Apr 2015 15:24

AW: MaskEdit Gleitkommafehler
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Seite 1 von 2  1 2      

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