![]() |
Problem mit d := System.Double.Parse(TextBox1.Text);
Hallo, Allerseits.
Delphi-Quellcode:
Zu diesem Quelltext habe ich folgende Frage:
try
d := System.Double.Parse(TextBox1.Text); Label1.Text := d.ToString; except MessageBox.Show('Sie können hier nur eine Zahl eingeben!'); TextBox1.Clear; self.ActiveControl := TextBox1; end; Wenn ich eine Zahl mit einem Komma eingebe (z.B. 1,25) funktioniert alles perfekt. Wenn ich eine Zahl mit einem Dezimalpunkt eingebe, steht in Label1 "125", also nur die Ziffern ohne Dezimalpunkt und es kommt auch keine Fehlermeldung. Sonstige Falscheingaben (Buchstaben, zwei Kommas, etc.) funktionieren auch. Warum wird bei der Eingabe eines Dezimalpunkts im Label der Dezimalpunkt nicht angezeigt und auch keine Fehlermeldung erzeugt? Ich bin für jede Hilfestellung dankbar. mfg gfjs |
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
Jaja, die allseits beliebte Hilfe...
Zitat:
Aber mehrere Kommata oder Buchstaben (außer e) - das musst du mir zeigen :stupid: . Boo-Interpreter, .NET 2.0
Code:
>>> System.Double.Parse("123,45,5");
System.FormatException: Die Eingabezeichenfolge hat das falsche Format. bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) bei System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) bei System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info) bei System.Double.Parse(String s) bei Input7Module.Main(String[] argv) |
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
@ khabarakh
Erst mal vielen Dank für Deine schnelle Unterstützung. Auf die Idee, dass der Punkt als 1000er-Trennzeichen interpretiert werden würde, bin ich dummerweise nicht gekommen. Aber ich würde das natürlich gerne unterdrücken. Fällt Dir eine andere Lösung ein, als die Eingabe eines Punktes zu sperren? Zitat:
Servus aus München gfjs |
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
Code:
Für dein Vorhaben kannst du also
public static double Parse (
string s, NumberStyles style ) double Parse(string) = double Parse(string, Numberstyles.Float or NumberStyles.AllowThousands)
Delphi-Quellcode:
benutzen, wahrscheinlich willst du aber zusätzlich noch andere Optionen wie AllowExponent abschalten.
Double.Parse(s, NumberStyles.Float);
|
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
Ich glaube, ich löse das so, dass ich als Eingabe nur Ziffern und Komma akzeptieren werde.
Delphi-Quellcode:
Hier erhalte ich eine Fehlermeldung "nicht deklarierter Bezeichner "NumberStyle ...". Ich vermute, da fehlt eine Namespace?!
Double.Parse(s, NumberStyles.Float);
mfg gfjs |
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
Mein SDK hat mir verraten, dass es sich um System.Globalization handelt :zwinker: .
|
Re: Problem mit d := System.Double.Parse(TextBox1.Text);
Jetzt klappt's! - Vielen Dank!
mfg gfjs |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 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