Problem mit Textbox

  • VB6

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Problem mit Textbox

    Hallo,

    ich will ein einfaches Additionsprogramm schreiben. Doch leider kommt ständig eine Laufzeitfehlermeldung. Dieser Fehler kommt seitdem ich die Textbox3 als Ergebnis umbenannt habe. Kann mir jeman sagen wo der Fehler liegt?

    Option Explicit
    Dim Ergebnis As Double, Ein1 As Double, Ein2 As Double

    Private Sub Command1_Click()

    Ein1 = Text1.Text
    Ein2 = Text2.Text
    Ergebnis = Text3.Text

    Ergebnis = Ein1 + Ein2

    End Sub

    Private Sub Ein1_Change()

    End Sub

    Private Sub Ein2_Change()

    End Sub

    Private Sub Ergebnis_Change()

    End Sub
    Was soll die Aufregung? Option Explizit ON ist die Standardeinstellung und VERLANGT eine Variablendeklaration, währen bei OFF keine Deklaration notwendig ist (und das ist Mist). Näheres hier. Die Einstellung steht in den Prokjeteigenschaften und muß nicht extra im Code stehen. ;)

    Viel schlimmer im Code vom TE ist wieder einmal die fehlende Konvertierung von String (Textbox.Text) in Integer. Also in Zeile 1 Option Strict ON schreiben und den Mauszeiger über die dann unterstrichenen Zuweisungen halten. Das rote Ausrufezeichen unterbreitet dann automatisch Vorschläge für die notwendige Konvertierung.

    Visual Basic-Quellcode

    1. 'z.B.
    2. Ein1=CINT(Textbox1.text)
    Dabei führt allerdings die Eingabe von Text oder ein leeres textfeld zu einer Ausnahme. Besser ist in jedem Fall Integer.Tryparse()

    Fiel fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Pete schrieb:

    Wenn ich das so eingebe, kommt die Meldung das der Benutzerdefinierte Typ Ein1 nicht definiert sei.


    du musst Ein1 as Integer deklarieren, int32 ist für .NET

    Pete schrieb:

    Was ich auch nicht vertsehe ist, dass wenn ich eine Textbox anklicke und aus z.B. Private Sub Text3_Change() einfach Private Sub Ergebnis_Change() mache, bei nochmaligen draufklicken wieder Private Sub Text3_Change() dransteht.


    deine textbox muss dann natürlich auch Ergebnis heißen und nicht text3
    Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
    Du solltest nicht einfach die Namen der Subs ändern sondern gleich den textboxen sinnvolle Namen geben wie z.B. TBErgebnis. Wenn du dann irgendwo TB eintippst bekommst du gleich alle Textboxen in der Intellisense angezeigt.
    Ansonsten... kenst du das Galileo Openbook ? Solltest du unbedingt lesen und verstehen.

    Edit: Ups, VB6 (Igitt) ;( hab ich ganz übersehen...
    Kleine Nebenfrage, warum nimmt man sowas. Als Newcomer solltest du dir VB2008 runterziehen (is auch umsonst).
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    VB 2008?^^
    man mit den Versionen ist das wie immer so eine Sache...
    VB .Net übernimmt leider alles für dich und probiert sogar mit Strings zu rechnen->Todsünde...
    Für VB.Net findet man sehr viele(und leider auch viele schlechte) Tutorials, außerdem macht das .Net die Programmierung sehr viel leichter...In VB6 würdest du für vieles WinAPI aufrufe benötigen, was im .Net mit einer Zeile geht...

    Wenn dein Prof sagt VB6 dann würd ich das auch nehmen^^

    Visual Basic-Quellcode

    1. Dim x As Integer = CINT(derString)

    so wandelst du einen String(also auch die Eingabe einer TextBox ) sauber in einen Integer(Ganzzahlenwert) um...
    du musst Ein1 as Integer deklarieren, int32 ist für .NET

    Int32 ist(in .Net) Äquivalent zu Integer, in VB6 ist es Äquivalent zu Long...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Alsooo, letzte Frage erstmal.

    Ich will der Textbox1 sagen, dass sie ab jetzt die Temperatur ist.

    Da ich will, dass die Variable das ganze Programm über besteht deklariere ich sie unter Option Explicit:

    Option Explicit

    Dim Temperatur As Integer

    Danach:

    Private Sub Command1_Click()

    Temperatur = CInt(Text1.Text)

    Und wenn ich jetzt die Textbox1 anklicke steht da:

    Private Sub Text1_Change()

    End Sub

    Dort lass ich alles wie es ist, oder?

    Und für was steht CInt?

    Danke