VB 2005 : Addieren (Double-String)

Xara56

Grünschnabel
Hallo,
jeder Anfang ist schwer und vom programmieren gilt's für mich doppelt.
Mein Problem :
Versuche addieren mit einem Eintrag in Textdatei.Es funktioniert auch, nur das Ergebnis ist nicht so wie es sein sollte... Die Zahlen zum addieren werden aus einer TextBox und aus Label eingelesen und als Double deklariert.
Anstatt 2450 hätte ich gerne 24.50, im Klartext zwei Stellen nach dem Punk, aber es gelingt mir einfach nicht.Bei allen Zahlen benutze ich kein Kommazeichen, sonder einen Punktzeichen.Wo ist der Fehler?
Hier ist der Code zum schreiben in die Textdatei :

Code:
 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim fw As StreamWriter
        Dim ReadString As String
        fw = New StreamWriter("C:\MiniJob.txt", True)
        Dim Datum As String
        Dim a As String
        Datum = TextBox1.Text
        a = TextBox2.Text.Substring(0, 4)
        Dim Tag As Integer
        Tag = Label5.Text
        Dim Stunden As Double, Stunden1 As Double
        Stunden = Label6.Text
        Stunden1 = Stunden + a

        If TextBox1.Text = Datum Then
            TextBox2.Text = a
            fw.WriteLine("00" & Tag + 1 & "  -  " & Datum & "  + " & a & ControlChars.NewLine & Stunden1.ToString)
            ReadString = TextBox1.Text & TextBox2.Text
        End If
        fw.Close()
        fw.Dispose()

        If TextBox1.Text = "" Then
            fw.Close()
            fw.Dispose()
            MsgBox("Bitte das Datum und die Stunden auswählen ...!", MsgBoxStyle.Exclamation)
        ElseIf Button3.Focused Then
            PlayBackgroundSoundResource()
            My.Computer.Audio.Play(My.Resources.Schreibmaschine, AudioPlayMode.Background)
            TextBox1.Text = ""
            TextBox2.Text = ""
            MsgBox("Bitte einen Augenblick warten, die Daten werden abgespeichert!" & vbCr & " Für den nächsten Eintrag bitte Datum und Stunden auswählen!", MsgBoxStyle.Information)
        End If

    End Sub
Für eine kleine Hilfe wäre ich dankbar
 
Zuletzt bearbeitet:
Hi M4st3r,

vielen Dank für deine Antwort und für den Tipp, werde ich auf jeden Fall versuchen.
Wie gesagt, als Anfänger kann man schlecht beurteilen ob es klug ist oder nicht, man sammelt Erfahrungen und ein guter Rat von jemanden der sich auskennt ist jeder Zeit willkommen.

:)

Gruß
Xara56
 
Hallo Leute,
hoffentlich schaut auch jemand andere rein und kann mir mit seinem Wissen helfen.
M4st3r hat es mit dem Rat zu parsen gut gemeint, aber damit bin ich gegen Wand gelaufen... :confused:
Es kann sein, daß die Lösung einfacher ist als es mir im Moment scheint, aber für mich ist es meilenweit entfernt.
Irgendwie geht's mir nicht in der Kopf, daß beim addieren von zwei Zahlen als Double deklariert (z.B. 14.00 + 3.50) 1750 rauskommt und nich von mir gewünschte 17.50.
Es mag sein, daß ich mich selbs in dem Code "festgenagelt" habe und komme nicht weiter.Das kann ich mit meinen bisherigen Programmier(un)kenntnisen beurteilen.
Fall's jemand irgendeine Idee haben sollte, bin ich nicht abgeneigt.

Vielen Dank im Voraus
Xara56

:google:
 
Hallo Xara, ich hab eben nochmal ein bißchen rumprobiert. Wenn du strings mit Punkt als Komma-Ersatz nimmst, dann machst du das einfach wie folgt:

Code:
string a = "14.00";
string b = "3.5";

a = a.Replace('.', ',');
b = b.Replace('.', ',');

double result = double.Parse(a) + double.Parse(b);

Dann kommt auch das richtigt Ergebnis raus - wenn jemand eine bessere Lösung hat, nur her damit ;-)
 
Hi!

Probiert das mal:
C#:
using System.Globalization;

[...]

CultureInfo cultureInfo = new CultureInfo( "en-GB" );
double.TryParse(
	targetString,
	NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
	cultureInfo.NumberFormat,
	out valueDouble );
Ungestetst, sollte aber gehen. ;-)
Das währe die saubere Variante. Evtl. noch die NumberStyles anpassen.

Btw. würd ich nach bestimmten Zeichenketten innerhalb von Strings mithilfe von Regex suchen.
Da spaart man sich das Fehlerhandling. Und ändert sich was in dem File,
muss man nur den Regex Pattern anpassen und im seltensten Fall die Logik die sie auswertet. ;)
 
Zuletzt bearbeitet:
Hallo euch beiden,
es freut mich, daß es neue Tipps gibt :)
Werde ich ausprobieren und selbsvertändlich melde ich mich wieder was da rausgekommen ist.

Gruß
Xara56
 
:( :-( :(

Hallo Leute,

wie ich glaube haben die 3 Smileys eine eindeutige Aussage - Ergebnis Null
Sieht so aus, daß ich vorerst an meine Grenzen gestossen bin...
Selbsverständlich schmeisse ich die Flinte nicht ins Korn, aber eigentlich dachte ich mit einer Textdatei ist es für den Anfang leichter als mit einer Datenbank.
Zum Programm sind noch einige Erweiterungen zum Speichern geplant und nach meinen Erfahrungen probiere ich es doch mit einer Datenbank.
Vielen Dank für euere Mühe, ihr seid goldig :)
Es werde mich aber trotzdem interessieren wie man den Code für Button3 anpassen könnte, daß es "". Falls jemand lange Weile haben sollte, oder es als Herausforderung betrachten kann - nur keine Hemmungen :D

MfG
Xara56
 
Wenn Du uns nicht sagst was genau nicht ging, wissen wir auch nicht wobei wir Dir jetzt helfen sollen.

Mach doch am besten mal eine kleine Demo und ein Textfile mit Zahlen drinn dazu.
Ich versuch es dann für dich funktional zu herzurichten. :)
 
Hallo Cosmo,

es ist mir nicht gelungen den Code so anzupassen, daß beim Klick auf den CommandButton3 (speichern der Daten in der Textdatei) die Zahlen im Format ##.## eingetragen sind. Warum nicht kann ich beim besten Willen nicht sagen... :confused:

In der Textdatei wird folgendes abgespeichert
Line1
Nummer des Arbeitstages ( z.B. 0047)
Datum des Arbeitstages ( 14.08.2006)
Arbeitsstunden ( z.B. + 3.50)
Line2
Gesamtstunden ( z.B. 10.50)

TextFile sieht dann so aus

0045 - 01.08.2006 + 3.50
3.50
0046 - 03.08.2006 + 3.50
7.00
0047 - 14.08.2006 + 3.50
10.50

In der Form wird es so angezeigt
Label5.Text = 0047
Label2.Text = 14.08.2006 + 3.50
Label6.Text = 10.50

Wie ich schon gesagt habe, es funktioniert alles einwandfrei bis auf die Ergebnisausgabe, es kommt 1050 raus und den Punkt macht man im TextFile nachträglich, was mir natürlich keine Ruhe gibt.

Ein Teil vom TextFile mit Zahlen ist da, aber was ist mit Demo im Bezug auf das Programm gemeint?

MfG
Xara56

:)
 

Neue Beiträge

Zurück