AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Problem mit d := System.Double.Parse(TextBox1.Text);
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit d := System.Double.Parse(TextBox1.Text);

Ein Thema von gfjs · begonnen am 20. Mär 2006 · letzter Beitrag vom 20. Mär 2006
Antwort Antwort
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#1

Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 18:06
Hallo, Allerseits.

Delphi-Quellcode:
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;
Zu diesem Quelltext habe ich folgende Frage:

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
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 18:21
Jaja, die allseits beliebte Hilfe...
Zitat:
integral-digits
A series of digits specifying the integral part of the number. Runs of integral-digits can be partitioned by a group-separator symbol. (For example, in some cultures a comma (,) separates groups of thousands.) Integral-digits can be absent if there are fractional-digits.

'.'
A culture-specific decimal point symbol.
Der Punkt wird also als Tausender-Trennzeichen erkannt, wobei 1.25 einfach als 125 gesehen wird.
Aber mehrere Kommata oder Buchstaben (außer e) - das musst du mir zeigen .

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)
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 19:06
@ 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:
Aber mehrere Kommata oder Buchstaben (außer e) - das musst du mir zeigen .
Das war natürlich "a Schmarr'n", wie man bei uns sagt. Ich meinte damit, dass bei diesen Falscheingaben die Fehlermeldung funktioniert. War ein Flüchtigkeitsfehler, weil ich kurz weg mußte.

Servus aus München

gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 19:29
Code:
public static double Parse (
   string s,
   NumberStyles style
)

double Parse(string) = double Parse(string, Numberstyles.Float or NumberStyles.AllowThousands)
Für dein Vorhaben kannst du also
Double.Parse(s, NumberStyles.Float); benutzen, wahrscheinlich willst du aber zusätzlich noch andere Optionen wie AllowExponent abschalten.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 19:59
Ich glaube, ich löse das so, dass ich als Eingabe nur Ziffern und Komma akzeptieren werde.

Double.Parse(s, NumberStyles.Float); Hier erhalte ich eine Fehlermeldung "nicht deklarierter Bezeichner "NumberStyle ...". Ich vermute, da fehlt eine Namespace?!

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 20:04
Mein SDK hat mir verraten, dass es sich um System.Globalization handelt .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Problem mit d := System.Double.Parse(TextBox1.Text);

  Alt 20. Mär 2006, 20:07
Jetzt klappt's! - Vielen Dank!

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:02 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