Thema: 

String to Double Fehler

Diskutiere String to Double Fehler im Windows Phone 7 Entwicklung Forum im Bereich Windows Phone 7 Allgemein; Hallo Leute, ich habe einen Bug in meiner App, und zwar ich habe eine TextBox mit einem InputScope "Digits" ,

  1. #1

    String to Double Fehler

    Hallo Leute,
    ich habe einen Bug in meiner App, und zwar ich habe eine TextBox mit einem InputScope "Digits" , somit nur Zahlen und ein Punkt für die Kommazahlen. Wenn ich jetzt den Text auslese und in eine Double-Variable packe, gibt es einen Fehler. Wenn ich 25.1 eintippe steht in meiner Variablen 251, wenn ich 520.625 eintippe, steht in der Variablen 520625. Sprich das Komma aus der TextBox wird gar nicht berücksichtigt.

    So lese ich aus und parse:
    Code:
    Zahl= Convert.ToDouble(TextBox1.Text);
    Mit ganzzahligen Zahlen funktioniert alles ohne Probleme.
    Was wird der Fehler sein?

    -Schledi

  2. #2

    AW: String to Double Fehler

    Du berücksichtigst nicht, dass Windows Phone per Default die eingestellte System-Culture berücksichtigt. Dadurch ist dann bei Einstellung Deutsch wahrscheinlich das Komma und nicht der Punkt das Dezimaltrennzeichen. Man kann aber z.B. bei Double.Parse in einer Überladung eine bestimmte Culture mitgeben (z.B. en-US) und dann klappts auch mit der Dezimalen.

  3. #3

    AW: String to Double Fehler

    Hallo,
    so einfach es sich anhört, es ist doch recht aufwendig alles abzudecken.
    Beispiel:
    - Systemeinstellung deutsch: 123.456,789
    - Systemeinstellung amerikanisch: 123,456.789
    diese Zahlen würde parse erkennen

    - Bildschirmtastatur für simple Zahleneingabe ist aber nur für amerikanische Eingaben geeignet 123456.789, das Komma fehlt!
    - hat aber jemand in Deutschland ein Handy mit Tastatur gibt er die Zahl in deutscher Version ein 123456,789 oder 123.456,789

    Nun wird es kompliziert. Was bedeutet 456.789 oder auch 456,789?
    4 Hundert... oder 4 Hunderttausend...
    Und geht der Spaß mit anderen Sprachen noch weiter?
    Für die meisten Fälle wirst du mit dem Tipp von StevieBallz ganz gut fahren, aber es ist eben lange nicht alles abgedeckt.

    Amerikanische Programme stürzen deswegen mit deutschen Systemeinstellungen oft ab, weil die das nie testen

    Grüße
    Hanno

  4. #4

    AW: String to Double Fehler

    Stimmt es liegt an der Systemeinstellung. Wenn wenn ich bei meiner Konfiguration (Deutsch) ein Komma einfüge läuft es, wenn ein Punkt dahinkommt stürzt die App ab. Mit der amerikanischen Konfiguration ist es genau anders herum! Gut zu wissen


    Danke euch

    -Schledi


  5. #5

    AW: String to Double Fehler

    kannst du nicht einfach über CulturInfo.NumberFormat das Problem umschiffen?

  6. #6

    AW: String to Double Fehler

    nicht os einfach, weil es sich um eine Benutzereingabe handelt. Und wer weis schon was der tut

  7. #7

    AW: String to Double Fehler

    Versuche doch mit Tryparse das ganze mit Systemeinstellungen zu parsen. Falls das false zurückgibt einfach nochmal im englischen Format probieren.

    Edit: Etwa so

    Code:
           public static bool TryParseCulture(string str, out double dbl)
            {
                if (double.TryParse(str, out dbl))
                    return true;
                else
                {
                    NumberStyles style = NumberStyles.Number;
                    CultureInfo info = CultureInfo.CreateSpecificCulture("en-US");
                    return double.TryParse(str, style, info, out dbl);
                }
            }
    Geändert (10.01.2012 um 17:09)

  8. #8
    Oder regexp?
    Mit der kostenlosen PocketPC.ch App von meinem LG-E900 aus geschrieben.

  9. #9

    AW: String to Double Fehler

    ^[\-]{0,1}[0-9]+[\.\,]{0,1}[0-9]*$
    müsste dann der passende Ausdruck sein. Die double.TryParse Methode finde ich allerdings besser geeignet. Sie ist genau für sowas gemacht

  10. #10

    AW: String to Double Fehler

    Danke für das Beispiel mit dem Code, hatte beim schreiben gerade mal wieder kein Visual Studio um das auszuprobieren. Bei Benutzereingaben ist das Verwenden der aktuellen Systemeinstellung meistens eine gute Idee. Das Problem ist, dass die meisten nicht daran denken wenn sie Config-Files auslesen und dann geht es in anderen Ländern nicht.

    Gerade bei Systemsettings schreibe ich deshalb meisten mit dem Punkt als Dezimaltrennzeichen und parse das ganze dann mit der InvariantCulture.

Antworten
Du betrachtest String to Double Fehler im Forum Windows Phone 7 Entwicklung im Bereich Windows Phone 7 Allgemein von PocketPC.ch.

String to Double Fehler

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 07.07.2011, 12:55
  2. iTunes für Android - Double Twist
    Von metter im Forum Android Apps
    Antworten: 2
    Letzter Beitrag: 11.02.2011, 02:00
  3. BUG bei Bluetooth DUN? Kein CONNECT-String
    Von Vo.IP im Forum HTC HD2 Kommunikation
    Antworten: 1
    Letzter Beitrag: 04.01.2010, 14:44

Besucher haben diese Seite mit folgenden Suchbegriffen gefunden:

windows phone string to double

wp7 convert string to double

wp7 parse string to double

Convert.ToDouble deutsch komma

tryparse german komma

windows phone zahleneingabe

double.tryParse englisches zahlenformat

windows phone sting to double

visual studio 2010 double problem punkt komma

double.tryparse wp7

was bedeutet text.to double

string double komma

system::double::tryparse fehler bei 10.0 deutsch

tryParseExact englisches format mit deutscher config info

windows phone format double string

tryparse double string mit Komma

galaxy s2 punkt komma zahlen

vc2005 string todouble

windows phone 7 double aus textfeld

windows phone 7 culture digits

windows phone toDouble

wp7 kommazeichen

double fehler

windows phone double parse

windows phone 7 textbox german format