Maliko - Mi 17.04.13 07:39
Titel: Bei Funktionsaufruf 2 verschiedene Ergebnisse
Hi,
ich hätte da mal ein recht merkwürdiges Problem. Und zwar habe ich mir eine Methode geschrieben, welche einen Wärungsstring in eine normale Dezimalzahl ändern soll. Die sieht wie folgt aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| public decimal GetOriginalValue(string value) { decimal output = 0;
value = value.Replace(".", ""); if(value.Contains('€')) value = value.Remove(value.IndexOf(" €")); if (value.Contains("km")) value = value.Remove(value.IndexOf(" km")); if (value.Contains("kg")) value = value.Remove(value.IndexOf(" kg"));
decimal.TryParse(value, out output);
return output; } |
Diese verwende ich das erste mal wie folgt:
C#-Quelltext
1:
| tb_Gewicht.Text = sysHandler.GetOriginalValue(tb_Gewicht.Text).ToString(); |
Wenn ich mir nun das Ergebnis von sysHandler.GetOriginalValue(tb_Gewicht.Text) anschaue (der String lautet zum Beispiel 1.250,00 kg), dann bekomme ich als ergebnis 1250 zurück.
C#-Quelltext
1:
| modifiedAuftrag.Gewicht = double.Parse(sysHandler.GetOriginalValue(tb_Gewicht.Text).ToString()); |
Wenn ich mir nun das Ergebnis von sysHandler.GetOriginalValue(tb_Gewicht.Text) anschaue (der String ist der selbe wie oben), dann bekomme ich als ergebnis 125000 zurück.
Hat irgendjemand von euch eine Ahnung woran das liegen kann? Die erste Variante sitzt im TextBox.Enter-Event und die zweite Variante in einem Button.Click-Event, wobei beide Steuerelemente von der Firma Telerik kommen.
Über einen kurzen Denkansatz wäre ich euch sehr dankbar.
MfG Maliko
EDIT: Hab den ersten Funktionsaufruf geändert, da ich mich in der Funktion vertahn habe. Der zuerst genannte steht in einer anderen
Maliko - Mi 17.04.13 14:25
Th69 hat folgendes geschrieben : |
| P.S: Deine GetOriginalValue-Methode ist suboptimal, da sie nur für bestimmte Strings richtige Ergebnisse liefert, z.B. probiere mal "100kg" oder "1€"... |
Ist schon richtig so. In die Spalten, wo mit der Funktion gearbeit wird, kann man nur Ziffern und das Komma eintragen. Dementsprechend kann da eigentlich kein anderer Fall eintreten.
Das mit der CultureInfo wars übrigens. Ich hatte an einer Stelle vergessen die CultureInfo rauszunehmen. Das Ding hatte ich schlicht und einfach übersehen.
Und ja ich weiß das der Parse umständlich ist. Ist aber der einzige Fall. Bis auf dieses Feld sind alle felder, welche mit der Methode arbeiten vom Typ decimal und ich hatte keinen Bock dafür ne Überladung zu schreiben.