Calcutor Probleme (VB) Hilfe!!!

Begonnen von slaves, 10. Juli 2007, 19:35:33 Uhr

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

slaves

weiß nich genau ob das der richtige bereich ist, aber ich habs richtig eilig... ;)

ich soll nen Taschenrechner programmieren für ein Referat,aber ich hab ein Problem:
soweit steht der code schon auch beim debuggen gibt es keine probleme,aber wenn man auf die "tasten" drückt passiert nichts!

p.s.: in virtual basic programmiert

hier der code:

Public Class Form1
    Dim zahl1 As String
    Dim rechenart As String
    Dim Text1 As Integer

    Private Sub Command9_click()
        Text1 = Text1 + "9"
        'Display = Display + 9 '
    End Sub
    Private Sub Command1_click()
        Text1 = Text1 + "1"
        'Display = Display + 1 '
    End Sub

    Private Sub Command2_click()
        Text1 = Text1 + "2"
        'Display = Display + 2 '
    End Sub

    Private Sub Command3_click()
        Text1 = Text1 + "3"
        'Display = Display + 3 '
    End Sub
    Private Sub Command4_click()
        Text1 = Text1 + "4"
        'Display = Display + 4 '
    End Sub

    Private Sub Command5_click()
        Text1 = Text1 + "5"
        'Display = Display + 5 '
    End Sub

    Private Sub Command6_click()
        Text1 = Text1 + "6"
        'Display = Display + 6 '
    End Sub

    Private Sub Command7_click()
        Text1 = Text1 + "7"
        'Display = Display + 7 '
    End Sub

    Private Sub Command8_click()
        Text1 = Text1 + "8"
        'Display = Display + 8 '
    End Sub

    Private Sub Command0_click()
        Text1 = Text1 + "0"
        'Display = Display + 0 '
    End Sub

    Private Sub Command11_click()
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "addieren"
        'variable "rechenart" soll den Wert "addieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command12_click()
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "subtrahieren"
        'variable "rechenart" soll den Wert "subtrahieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command13_click()
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "multiplizieren"
        'variable "rechenart" soll den Wert "multiplizieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command14_click()
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "dividieren"
        'variable "rechenart" soll den Wert "dividieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub
   
    Private Sub CommandC_click()
        text1 = ""
        zahl1 = ""
        'Variable und Display löschen'
    End Sub

    Private Sub Commandistgleich_click()
        If rechenart = "addieren" Then
            Text1 = CDbl(zahl1) + CDbl(text1)
            'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt'
        ElseIf rechenart = "subtrahieren" Then
            text1 = CDbl(zahl1) - CDbl(Text1)
        ElseIf rechenart = "multiplizieren" Then
            text1 = CDbl(zahl1) * CDbl(Text1)
        ElseIf rechenart = "dividieren" Then
            Text1 = CDbl(zahl1) / CDbl(Text1)
        End If
    End Sub

End Class


ich hab das gefühl es liegt mit der deklarierung von text1 zusammen...
Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"

gandal

10. Juli 2007, 20:35:24 Uhr #1 Letzte Bearbeitung: 10. Juli 2007, 20:41:02 Uhr von gandal
Sieht aus wie VB-Express, oder ?

Mich wundert das ganze ein bischen. In der IDE wird eigentlich jeder syntaktischer Fehler sofort angezeigt.
Zuordnungen zu Textfelder würde ich immer mit "yyyyy.text" machen. Das sagt Dir die IDE doch auch. Typfehler lassen sich auf diese Weise sofort umgehen.

Deine Variable "Text1" hast Du aber als Integer definiert und ihr eine String-Wert zugeordnet. Da sollte die IDE gleich motzen.
Hier ist schon der Variablennamen irreführend.
Zahl1 wiederrum ist eine String (Zeichenfeld), welchem Du ohne Umschweife die Zahl zuordnest.
Dies wiederum würde man mit DasisteineZahl.tostring machen.

Hier fehlt bei Aufruf des Klick-Ereignisse eine ganze Menge.
Das Standardereignis würde in Express so aussehen:

Private Sub cmd1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd1.Click

end sub


Probier es mal mit einem Doppelklick auf den Button.


Bei dem Code fehlt noch jede Menge ...
Den Befehlsflächen solltest Du vernünftige Namen geben, z.B.  cmdMult  zum Multiplizieren.

Welche VisualBasic-Version ist es denn ?
         
Real Programmers code in binary

slaves

Zitieren
Mich wundert das ganze ein bischen. In der IDE wird eigentlich jeder syntaktischer Fehler sofort angezeigt.
Zuordnungen zu Textfelder würde ich immer mit "yyyyy.text" machen. Das sagt Dir die IDE doch auch. Typfehler lassen sich auf diese Weise sofort umgehen.

Deine Variable "Text1" hast Du aber als Integer definiert und ihr eine String-Wert zugeordnet. Da sollte die IDE gleich motzen.
Hier ist schon der Variablennamen irreführend.
Zahl1 wiederrum ist eine String (Zeichenfeld), welchem Du ohne Umschweife die Zahl zuordnest.
Dies wiederum würde man mit DasisteineZahl.tostring machen.

also was soll ich da ändern?

ZitierenProbier es mal mit einem Doppelklick auf den Button.
auf welchem von den 16 ? ;)

ZitierenWelche VisualBasic-Version ist es denn ?
Microsoft Visual Basic 2005 Express Edition
Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"

gandal

10. Juli 2007, 21:06:12 Uhr #3 Letzte Bearbeitung: 10. Juli 2007, 21:08:28 Uhr von gandal
Zitat von: slaves am 10. Juli 2007, 21:00:35 Uhr
also was soll ich da ändern?
Benenne die Variablen mal vernünftig und weise ihnen sinvolle Typen zu.
Welchen Zahlenraum willst Du überhaupt abdecken ?


Zitat von: slaves am 10. Juli 2007, 21:00:35 Uhr
auf welchem von den 16 ? ;)
Das spielt doch keine Rolle, es geht darum, daß Du den Rahmen Der Sub-Routine automatisch erhälst.


Unten in der IDE ist ein Fenster, da werden Dir die Warnhinweise und Fehler doch angezeigt.
Ein Doppelklick darauf und Du stehst an der Stelle ...
Im Source werden die kritischen Bereich auch unterkringelt. Wenn Du den Mauszeiger draufhälst weißt Du auch schon mehr.

In den Optionen zur IDE solltest Du strenge Regeln für die Typ-Prüfung, ... verwenden, daß erspart Dir ne Menge Arbeit.
         
Real Programmers code in binary

slaves

Zitat von: gandal am 10. Juli 2007, 21:06:12 Uhr
Benenne die Variablen mal vernünftig und weise ihnen sinvolle Typen zu.
Welchen Zahlenraum willst Du überhaupt abdecken ?
aber das benennen is doch egal...außerdem soll das leicht verständlich sein für meine klasse (da hat keiner ahnung von so nem zeug ;) )
zwischen 0-9999 sollte reichen

ZitierenUnten in der IDE ist ein Fenster, da werden Dir die Warnhinweise und Fehler doch angezeigt.
Ein Doppelklick darauf und Du stehst an der Stelle ...
es wird kein einziger fehler,warnung oder meldung angezeigt...
Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"

gandal

Zitat von: slaves am 10. Juli 2007, 21:09:46 Uhr
aber das benennen is doch egal...außerdem soll das leicht verständlich sein für meine klasse (da hat keiner ahnung von so nem zeug ;) )
Klar, aber wenn aus den Namen schon hervorgeht was das soll, ist es viel leichter.

Eine Stringveriable weißt man eben nicht die Bezeichnung "Zahl" zu, während man der Zahl die Bezeichnung "Text" zuweist.
Da wird schon das lesen des Quelltextes schwer, weil man nie weiß, was die Variable überhaupt macht, und welchen Typ sie hat.


Sollst Du den Quelltext darlegen, oder nur den Rechner als fertiges Produkt vorführen ?
Wie heißt denn das Feld mit der Anzeige in Deinem Programm, das über all den Buttons ...
         
Real Programmers code in binary

slaves

10. Juli 2007, 21:23:54 Uhr #6 Letzte Bearbeitung: 10. Juli 2007, 21:33:47 Uhr von slaves
Zitat von: gandal am 10. Juli 2007, 21:20:06 Uhr
Sollst Du den Quelltext darlegen, oder nur den Rechner als fertiges Produkt vorführen ?
da keiner davon ahnung hat bleibt das mir überlassen...ich könnte auch diesen code vorlegen und die leute würden keine fehler entdecken :D

ZitierenWie heißt denn das Feld mit der Anzeige in Deinem Programm, das über all den Buttons ...

TextBox1



edit:
in meinem ganzen text kommt kein einziges mal TextBox1 vor ;)

ich glaube ich hab die ganze zeit text1 statt TextBox1 benutz ...

ok ich hab jetzt 23 fehler ( ;) )
19 hab ich nun gelöst indem ich text1 als string deklariert habe...
Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"

slaves

10. Juli 2007, 21:35:50 Uhr #7 Letzte Bearbeitung: 10. Juli 2007, 21:38:45 Uhr von slaves
die letzten 4 fehler beziehen sich auf:

       Text1 = CDbl(zahl1) + CDbl(text1)
            'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt'
        ElseIf rechenart = "subtrahieren" Then
            text1 = CDbl(zahl1) - CDbl(Text1)
        ElseIf rechenart = "multiplizieren" Then
            text1 = CDbl(zahl1) * CDbl(Text1)
        ElseIf rechenart = "dividieren" Then
            Text1 = CDbl(zahl1) / CDbl(Text1)

edit:
auch gelöst ;) durch die fehlerkorrektur

der code sieht jetzt so aus (funzt immer noch nicht):

Public Class Form1
    Dim zahl1 As String
    Dim rechenart As String
    Dim Text1 As String

    Private Sub Command9_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "9"
        'Display = Display + 9 '
    End Sub
    Private Sub Command1_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "1"
        'Display = Display + 1 '
    End Sub

    Private Sub Command2_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "2"
        'Display = Display + 2 '
    End Sub

    Private Sub Command3_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "3"
        'Display = Display + 3 '
    End Sub
    Private Sub Command4_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "4"
        'Display = Display + 4 '
    End Sub

    Private Sub Command5_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "5"
        'Display = Display + 5 '
    End Sub

    Private Sub Command6_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "6"
        'Display = Display + 6 '
    End Sub

    Private Sub Command7_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "7"
        'Display = Display + 7 '
    End Sub

    Private Sub Command8_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "8"
        'Display = Display + 8 '
    End Sub

    Private Sub Command0_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = Text1 + "0"
        'Display = Display + 0 '
    End Sub

    Private Sub Command11_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "addieren"
        'variable "rechenart" soll den Wert "addieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command12_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "subtrahieren"
        'variable "rechenart" soll den Wert "subtrahieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command13_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "multiplizieren"
        'variable "rechenart" soll den Wert "multiplizieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub

    Private Sub Command14_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        zahl1 = Text1
        'die Variable soll genau den Wert des Displays erhalten'
        rechenart = "dividieren"
        'variable "rechenart" soll den Wert "dividieren" erhalten'
        Text1 = ""
        'Display leeren'
    End Sub
    Private Sub CommandC_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Text1 = ""
        zahl1 = ""
        'Variable und Display löschen'
    End Sub

    Private Sub Commandistgleich_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If rechenart = "addieren" Then
            Text1 = CStr(CDbl(zahl1) + CDbl(Text1))
            'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt'
        ElseIf rechenart = "subtrahieren" Then
            Text1 = CStr(CDbl(zahl1) - CDbl(Text1))
        ElseIf rechenart = "multiplizieren" Then
            Text1 = CStr(CDbl(zahl1) * CDbl(Text1))
        ElseIf rechenart = "dividieren" Then
            Text1 = CStr(CDbl(zahl1) / CDbl(Text1))
        End If
    End Sub



End Class

Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"

gandal

In den Fehlerhinweisen sollte genau stehen, was falsch ist.


Text1 ist bei Dir eine Stringvariable, der Du den Wert einer Zahl zuweist.
Das kannst Du so ja nicht machen, Du mußt das ganze wieder wandeln.

z.B. so ...

Dim Ergebnis as double
Ergebnis = CDbl(zahl1) - CDbl(Text1)
text1.text = Ergebnis.tostring

Dann wird aber immer noch nichts angezeigt ...
         
Real Programmers code in binary

slaves

10. Juli 2007, 21:41:56 Uhr #9 Letzte Bearbeitung: 10. Juli 2007, 21:50:53 Uhr von slaves
wo liegt das problem? *ichspringgleich* ;)

edit:

egal ... aber vielen,vielen dank für deine hilfe!  :D

ich werd ihnen einfach den quelltext zeigen und ein bild von der windows oberfläche des programms...
in meiner klasse kennt sowieso keiner damit aus...besonders nicht wenn ich das auf Spanisch vortragen muss ;)

:danke1:
Intel E8400 @boxed                          
Asus P5Q                        
2x 1GB Kingston HyperX SLI-Kit DDR2-1066 
Sapphire HD3870 @Arctic Accelero S1+2*120mm Scythe Slipstream
OCZ StealthXStream 500Watt
LG W2443T 24"

MacBook Pro 13" 2,4 GHz / 4 GB RAM  / NVIDIA Geforce 320M
ASUS MS227N 22"