Fehler bei Dateityp

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Fehler bei Dateityp

    Also ich mache gerade ein Programm, wo ich Arbeitststunden ausrechne. Ich habe 10 Tage zum Ausrechnen. Ich rechne immer zb. von 7 bis 10 und von 11 bis 16, dann rechne ich (10-7)+(16-11) --> das ist eine Zeile von 10. Wenn ich jetzt aber nur in eine Zeile was reinschreib und dann auf berechnen drücke kommt immer dieser Fehler "Ungültige Konvertierung von der Zeichenfolge in Typ Double." Ich geb noch das rein was ich bis jetzt geschrieben habe.
    Noch zur Erklärung: Ich schreibe dann im Programm die Uhrzeit (zb.7) in ein Textfeld. vv1 ist das erste Textfeld, bv1 ist das zweite Textfeld, vn1 ist das Dritte Textfeld, bn1 ist das 4 Textfeld und g1 ist die Ausgabe in einem Labelfeld. dann wird halt so gerechnet g1 = (vv1-bv1)+(vn1-bn1), aber das seht ihr eh unten. Hoffe es ist alles Verständlich erklärt ;) Ich hab übrigends zuerst mal mit Integer, Decimal, String probiert, hat alles nicht Funktioniert, und mit Object hat es auch nicht funktioniert -.-


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'Beschreibung

    Dim vv1 As Object
    Dim bv1 As Object
    Dim vn1 As Object
    Dim bn1 As Object
    Dim g1 As Object

    Dim vv2 As Object
    Dim bv2 As Object
    Dim vn2 As Object
    Dim bn2 As Object
    Dim g2 As Object

    Dim vv3 As Object
    Dim bv3 As Object
    Dim vn3 As Object
    Dim bn3 As Object
    Dim g3 As Object

    Dim vv4 As Object
    Dim bv4 As Object
    Dim vn4 As Object
    Dim bn4 As Object
    Dim g4 As Object

    Dim vv5 As Object
    Dim bv5 As Object
    Dim vn5 As Object
    Dim bn5 As Object
    Dim g5 As Object

    Dim vv6 As Object
    Dim bv6 As Object
    Dim vn6 As Object
    Dim bn6 As Object
    Dim g6 As Object

    Dim vv7 As Object
    Dim bv7 As Object
    Dim vn7 As Object
    Dim bn7 As Object
    Dim g7 As Object

    Dim vv8 As Object
    Dim bv8 As Object
    Dim vn8 As Object
    Dim bn8 As Object
    Dim g8 As Object

    Dim vv9 As Object
    Dim bv9 As Object
    Dim vn9 As Object
    Dim bn9 As Object
    Dim g9 As Object

    Dim vv10 As Object
    Dim bv10 As Object
    Dim vn10 As Object
    Dim bn10 As Object
    Dim g10 As Object

    'Einlesen

    vv1 = Me.TextBox1.Text
    bv1 = Me.TextBox2.Text
    vn1 = Me.TextBox4.Text
    bn1 = Me.TextBox3.Text

    vv2 = Me.TextBox24.Text
    bv2 = Me.TextBox23.Text
    vn2 = Me.TextBox22.Text
    bn2 = Me.TextBox21.Text

    vv3 = Me.TextBox20.Text
    bv3 = Me.TextBox19.Text
    vn3 = Me.TextBox18.Text
    bn3 = Me.TextBox17.Text

    vv4 = Me.TextBox16.Text
    bv4 = Me.TextBox15.Text
    vn4 = Me.TextBox14.Text
    bn4 = Me.TextBox13.Text

    vv5 = Me.TextBox12.Text
    bv5 = Me.TextBox11.Text
    vn5 = Me.TextBox10.Text
    bn5 = Me.TextBox9.Text

    vv6 = Me.TextBox8.Text
    bv6 = Me.TextBox7.Text
    vn6 = Me.TextBox6.Text
    bn6 = Me.TextBox5.Text

    vv7 = Me.TextBox28.Text
    bv7 = Me.TextBox27.Text
    vn7 = Me.TextBox26.Text
    bn7 = Me.TextBox25.Text

    vv8 = Me.TextBox32.Text
    bv8 = Me.TextBox31.Text
    vn8 = Me.TextBox30.Text
    bn8 = Me.TextBox29.Text

    vv9 = Me.TextBox36.Text
    bv9 = Me.TextBox35.Text
    vn9 = Me.TextBox34.Text
    bn9 = Me.TextBox33.Text

    vv10 = Me.TextBox40.Text
    bv10 = Me.TextBox39.Text
    vn10 = Me.TextBox38.Text
    bn10 = Me.TextBox37.Text

    'Berechnen

    g1 = (bv1 - vv1) + (bn1 - vn1)
    g2 = (bv2 - vv2) + (bn2 - vn2)
    g3 = (bv3 - vv3) + (bn3 - vn3)
    g4 = (bv4 - vv4) + (bn4 - vn4)
    g5 = (bv5 - vv5) + (bn5 - vn5)
    g6 = (bv6 - vv6) + (bn6 - vn6)
    g7 = (bv7 - vv7) + (bn7 - vn7)
    g8 = (bv8 - vv8) + (bn8 - vn8)
    g9 = (bv9 - vv9) + (bn9 - vn9)
    g10 = (bv10 - vv10) + (bn10 - vn10)

    'Ausgabe

    Label10.Text = g1
    Label18.Text = g2
    Label17.Text = g3
    Label12.Text = g4
    Label11.Text = g5
    Label70.Text = g6
    Label19.Text = g7
    Label67.Text = g8
    Label68.Text = g9
    Label69.Text = g10

    End Sub
    ist eigentlich relativ simpel...

    Textbox.text ist der Typ String... Du versuchst hier also, zwei Strings zu addieren bzw subtrahieren.

    Benutz lieber statt

    VB.NET-Quellcode

    1. vv1 = Me.TextBox1.Text


    das hier:

    VB.NET-Quellcode

    1. vv1 = CInt(TextBox1.Text)


    Und mach am besten Option Strict an, dann solltest du einige Fehler angezeigt kriegen, die du beheben solltest.
    Übrigens... mach das Object weg und nimm wieder Integer.
    Dann müsstest du genauer Lesen. Eine List(of Textbox) ist keine Listbox. Sondern eine Collection, also art Array nur besser handelbar. Dann benötigst du keine Variablen mehr sondern hast deine Liste, diese kannst du in einer Schleife durchlaufen und mit jedem Schleifendurchlauf bekommst du eine Textbox , dort holst du den Wert heraus und kannst ihn dann zu einer Variablen o.ä. addieren.

    PS: Erstellst du die Controls dynamisch? Oder willst du nun für jeden Monat eine Form mit den ganzen Textboxen und Labels machen und statisch einprogrammieren?
    und wie soll ich die collection machen. Sorry aber hab von ner Collection noch nie was gehört.

    PS: Ja Ich mache für jeden Monat eine neue Form, in dieser Form kann man dann zwischen 10 Mitarbeitern wählen, und für jeden Mitarbeiter ist dann diese Form mit den ganzen Textboxen und labels, aber ich weis nicht wie ich die controls dynamisch erstellen kann
    Also das ist der denkbar ungünstigste Weg, zudem hast du somit einen riesen Overhead an Daten. Es wird doch immer das selbe gemacht, also braucht man schonmal nur EINMAL diesen Code der alles zusammen rechnet und nicht 12 mal.

    Wie man Collections im speziellen List(of T) verwendet, findest du in der MSDN Referenz oder in sonstigen Beispielen und erklärungen im Netz. Ebenso das dynamische hinzufügen und verarbeiten von Controls. Das sicherlicht nicht einfach, aber es ist dann 100% dynamisch und du sparst dir etlich viel zeit und Code als wenn es mit statischen Forms gemacht hättest.