Visual Basic 6(logischer Fehler)

Diskutiere Visual Basic 6(logischer Fehler) im Software Probleme Forum im Bereich Computerprobleme; Hallo... Ich hab ein programm gemacht der die fleache von einem Dreieck rechnet. Private Sub Form_Load() Base = InputBox("put base")...

  1. #1 ahlitripoli, 23.06.2011
    ahlitripoli

    ahlitripoli Neuer Benutzer

    Dabei seit:
    22.06.2011
    Beiträge:
    14
    Zustimmungen:
    0
    Hallo...

    Ich hab ein programm gemacht der die fleache von einem Dreieck rechnet.

    Private Sub Form_Load()
    Base = InputBox("put base")
    Height = InputBox("put height")
    Area = Base * Height
    Print Area

    End Sub

    wenn ich auf run druecke erscheinen mir wie gewoehnlich 2 fenster(nacheinander),ich tippe z.b fuer base 3,und fuer height 4.es sollte eig. 12 ergeben.aber stattdessen erscheint 1720 ????

    Aber bei einfache programme wie 2*4 ist die lousung korrekt.

    Was ist das problem:confused:

    PS:ich habe natuerlich Autoredraw auf True geaendert.
     
  2. Anzeige

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 xandros, 23.06.2011
    Zuletzt bearbeitet: 23.06.2011
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    26.164
    Zustimmungen:
    116
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    kein logisches, sondern ein stilistischer Fehler!

    Du verwendest Variablen, ohne diese zu initialisieren. Das ist a) unsauber und b) automatisch fuer VB die Anweisung intern ein Variant zu erstellen und kein Integer!
    Variant wird nicht zwangslaeufig als Integer oder Double interpretiert! Es kann auch als String herhalten.

    Ergo: Zuerst einmal ordentlich die Variablen initialisieren und dann schauen, was damit passiert.

    BTW: Warum werden die Werte in Inputboxen abgefragt?
    Du verwendest ein Form! Pack ein paar Felder und ein Label da drauf.
    Im Feldereignis "Nach Aktualisierung" kann dann die Berechnung bereits durchgefuehrt und das Ergebnis an das Label uebergeben werden.
    Im Form_Load werden Anweisungen abgelegt, die beim Laden des Forms durchgefuehrt werden.
    Form_Load ist erst abgeschlossen, wenn dein Programm bereits beendet ist. Das ist so nicht gedacht!
    Das Form muss vollstaendig geladen und dargestellt sein, damit man damit arbeiten kann.
     
  4. #3 ahlitripoli, 23.06.2011
    ahlitripoli

    ahlitripoli Neuer Benutzer

    Dabei seit:
    22.06.2011
    Beiträge:
    14
    Zustimmungen:
    0
    Ab dem 6 satz hab ich nicht gut versanden.
    Ich hab es schon versucht dass mit integer aber es hat nicht geklappt.
    Also du meinst nach Base und Height und Area solle ein % rein. wie folgend

    Base% = InputBox("put base")
    Height% = InputBox("put height")
    Area% = Base% * Height%
    Print Area%

    es hat aber nichts gebracht!

    Kann das problem daran liegen,dass ich Windos7 benutze,obwohl VB6 eig. fuer XP gedacht ist?
     
  5. #4 xandros, 23.06.2011
    Zuletzt bearbeitet: 23.06.2011
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    26.164
    Zustimmungen:
    116
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Code:
    Dim Base as Integer
    ist die offizielle Syntax, um eine Variable als Integer zu deklarieren und initialisieren.
    Danach kann diese Variable auch verwendet werden.
    Welches OS unter VB6 verwendet wird, ist der IDE reichlich egal.

    Inputbox liefert einen String zurueck und keine Zahl. Du muesstest somit eine Typkonvertierung vornehmen.

    Der komplette Code muesste genau genommen so aussehen: (kann in VB6 eventuell etwas abweichen - das ist schon zu lange her! Und VB.NET hat diverse Aenderungen in dem Bereich!)
    Code:
    DIM Base as Integer
    DIM Height as Integer
    DIM Area as Integer
    
    Base = Convert.ToInt16(Inputbox("put base"))
    Height = Convert.ToInt16(Inputbox("put height"))
    Area = Base * Height
    
    'Print Area <- Print ist fuer die Ausgabe in der Konsole oder in einen Filestream, 
    'nicht fuer die Ausgabe in einer Forms-Anwendung. 
    'Setze ein Label-Element auf das Form 
    'und uebergib diesem das Ergebnis als String!
    
    Me.Label1.Text=Convert.ToString(Area)
     
  6. Anzeige

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
Thema: Visual Basic 6(logischer Fehler)
Besucher kamen mit folgenden Suchen
  1. visual basic 6 windows 7 form paint problem

    ,
  2. visual basic ausrufezeichen

Die Seite wird geladen...

Visual Basic 6(logischer Fehler) - Ähnliche Themen

  1. Plötzlich SYNTP.SYS Fehler

    Plötzlich SYNTP.SYS Fehler: Hallo, hatte das erste Mal in meinem Leben einen syntp.sys Fehler. Muss ich da was machen? Oder macht das mein Betriebssystem selber?
  2. Fehler ID 4015

    Fehler ID 4015: Hallo Leute, ich bekomme neuerdings immer die Fehlermeldung: ID: 4015 Der DNS-Server hat einen kritischen Active Directory-Fehler ermittelt....
  3. Fehler beim Installieren des Grafikkartentreibers!

    Fehler beim Installieren des Grafikkartentreibers!: Hallo zusammen! Ich habe ein kleines Problem mit meinem Laptop, und zwar kann ich den Grafikkarten Treiber nicht installieren. Ich habe auf der...
  4. Fehler bei der Wiederherstellung?

    Fehler bei der Wiederherstellung?: Hallöle! Ich habe gestern mein Notebook auf Werkswerkeinstellungen (hießen doch so oder?) zurückgesetzt. Nachdem ich mich dann angemeldet habe...
  5. Sprung im iPhone 6 Display

    Sprung im iPhone 6 Display: Bei meinem iPhone 6 ist das Display gesprungen. Nicht viel, es geht auch noch alles, aber es sieht schei... aus. Sollte ich damit in ein...