
Ergebnis 1 bis 10 von 10
-
Fühle mich heimisch
- 09.01.2012, 18:55
- #1
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);
Was wird der Fehler sein?
-Schledi
-
Gehöre zum Inventar
- 10.01.2012, 06:34
- #2
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.
-
entwickelt Apps
- 10.01.2012, 15:43
- #3
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
-
Fühle mich heimisch
- 10.01.2012, 15:50
- #4
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
-
- 10.01.2012, 16:00
- #5
kannst du nicht einfach über CulturInfo.NumberFormat das Problem umschiffen?
-
entwickelt Apps
- 10.01.2012, 16:24
- #6
nicht os einfach, weil es sich um eine Benutzereingabe handelt. Und wer weis schon was der tut
-
entwickelt Apps
- 10.01.2012, 17:04
- #7
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); } }
-
- 10.01.2012, 17:24
- #8
Oder regexp?
Mit der kostenlosen PocketPC.ch App von meinem LG-E900 aus geschrieben.
-
entwickelt Apps
- 10.01.2012, 18:07
- #9
^[\-]{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
-
Gehöre zum Inventar
- 10.01.2012, 19:47
- #10
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.
Ähnliche Themen
-
Nach Double-Wipe, Firmware-Reset, etc... sind dennoch alle alten Daten auf der int.SD
Von alexf1905 im Forum Samsung Galaxy S Root und ROMAntworten: 2Letzter Beitrag: 07.07.2011, 12:55 -
iTunes für Android - Double Twist
Von metter im Forum Android AppsAntworten: 2Letzter Beitrag: 11.02.2011, 02:00 -
BUG bei Bluetooth DUN? Kein CONNECT-String
Von Vo.IP im Forum HTC HD2 KommunikationAntworten: 1Letzter Beitrag: 04.01.2010, 14:44
Pixel 10 Serie mit Problemen:...