![]() |
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:
Vielleicht weis einer von euch was da schief ist.
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; |
AW: MaskEdit Gleitkommafehler
Delphi-Quellcode:
als Letztes ... Was wird StrToFloat wohl machen, wenn es vorher auf den
or (MaskEdit1.Text = '')
Delphi-Quellcode:
trifft? :roll:
''
Außerdem gibt es noch viel mehr "ungültige" Strings, als nur den
Delphi-Quellcode:
.
''
PS: ![]() ![]() |
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; |
AW: MaskEdit Gleitkommafehler
Was zeigt Delphi denn für einen Fehler beim Debuggen?
|
AW: MaskEdit Gleitkommafehler
Wenn ich im OnChange folgendes eintrage:
Code:
Dann schreibt mir Delphi:
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; [dcc64 Fehler] ueinstellungkopfzeile.pas(160): E2250 Es gibt keine überladene Version von 'StrToFloatDef', die man mit diesen Argumenten aufrufen kann |
AW: MaskEdit Gleitkommafehler
|
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.
|
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:
Dafür haben FloatToStr, StrToFloat und TryStrToFloat einen zweiten, bzw. StrToFloatDef einen dritten Parameter.
FormatSettings.DecimalSeparator := '.';
Application.UpdateFormatSettings := false; |
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:
|
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 21:08 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