Hilfe! Hausarbeit!

  • Sonstige

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Higlav.

    Hilfe! Hausarbeit!

    Hallo zusammen!

    Ich bin ganz neu hier im Forum, da ich bisher nur mit Programm-Sprachen wie C und Python in Kontakt gekommen bin. Seit zwei Tagen hab ich mich nun intensiv mit VB beschäftigt, da ich für eine Hausarbeit (Maschbau, ja es gibt auch Mädchen die so etwas tun! :D ) Makros in CatiaV5 Programmieren soll. Es geht hauptsächlich um Ein-, Ausgabe und Überprüfung von Werten. Bei folgender verschachtelter if-Schleife versteh ich beim besten Willen nicht, wo das Problem liegt:



    Visual Basic-Quellcode

    1. i=0
    2. Do until i=1
    3. l=InputBox("Bitte geben Sie die tragende Profillänge l in mm an:", "tragende Profillänge l", 30)
    4. m=MsgBox("Sie haben folgende tragende Profillänge l gewählt: "&l, 64 , "Gewählte tragende Profillänge l")
    5. if Werkstoff="GJL" then
    6. x=(2.2*d1)
    7. y=(2.6*d1)
    8. if l < x or l > y then
    9. m=MsgBox("Achtung! Die tragende Profillänge sollte im Intervall von " &(2.2*d1)& "mm bis " &(2.6*d1)&"mm liegen", 48, "Warnung")
    10. else
    11. i=1
    12. end if
    13. elseif Werkstoff="Stahl, GS" then
    14. x=(2.0*d1)
    15. y=(2.5*d1)
    16. if l < x or l > y then
    17. m=MsgBox("Achtung! Die tragende Profillänge sollte im Intervall von " &(2.0*d1)& "mm bis " &(2.5*d1)&"mm liegen", 48, "Warnung")
    18. else
    19. i=1
    20. end if
    21. end if
    22. loop



    Die eingangsdaten sind [d1]=14 und [Werkstoff]="Stahl, GS". Auch wenn der Wert [l] im Sollberreich liegt, verfängt sich die Schose in einer Endlosschleife von der Eingabe des Wertes zur Warnung, dass [l] ausserhalb des Intervalls liegt(obwohl es das nicht tut).

    Wahrscheinlich schlagen 99% des Forums jetzt die Hände über dem Kopf zusammen:whistling:


    Ich bitte trotzdem um schnelle Hilfe, entweder bin ich zu blind oder zu blöd den Fehler zu finden.


    MfG Steffi

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Also kannst du das nicht einfach debuggen und sehen was er falsch macht?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Wenn das VB.Net ist, dann ist es grottenschlecht gemacht ^^
    Sieht nach VB6 aus.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    sanktangus schrieb:

    if-Schleife
    if-schleife.de

    Zu deinem Problem:
    Von dem schlechten Programmierstil (den du ja selbst schon erwähnt hast), solltest du dir einfach mal einen Breakpoint setzen. Ich gehe mal davon aus, dass du weißt wie das geht (ansonsten fragen). Setze den Breakpoint von mir aus schon in der Ersten Zeile. Gehe Schritt für Schritt durch (gehe ebenfalls davon aus, dass du weißt wie das geht). Du kannst wenn du mit der Maus über eine Variable gehst deren Wert sehen. Gehe also Schritt für Schritt durch, schau welchen Wert die Variabeln haben und so findest du recht schnell heraus, weshalb das passiert was eben passiert.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Wenn es VBA ist sollte man den Fred mal verschieben, wa?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Hallo Steffi,

    Da ich nächtes Herbstsemester selbst mit meinem MB-Studium beginne, weiss ich, dass da wieder ein paar mehr weibliche Individuen vertreten sind als beispielsweise in einer Lehre. Eine Bekannte von mir wird mit mir gleichzeitig anfangen, Maschinenbau zu studieren. Ich blicke dem schon freudig entgegen.
    Zu deinem Skript(Cool, ihr benutzt im Studium anscheinend ebenfalls Catia V5!): Da du den Fehler nicht genannt hast, habe ich das Skript halt mal blind getippelt:

    Visual Basic-Quellcode

    1. Dim l#
    2. Dim x#
    3. Dim y#
    4. 'Code
    5. Do
    6. Dim XFactor#
    7. Dim YFactor#
    8. 'On Error Resume Next
    9. l = CDbl(InputBox("Bitte geben Sie die tragende Profillänge l in mm an:", "tragende Profillänge l", 30))
    10. 'On Error Goto 0
    11. 'MsgBox("Sie haben folgende tragende Profillänge l gewählt: " & l, 64, "Gewählte tragende Profillänge l")
    12. Select Case Werkstoff
    13. Case Is = "GJL" 'Guss
    14. XFactor = 2.2
    15. YFactor = 2.6
    16. Case Is = "Stahl, GS"
    17. XFactor = 2
    18. YFactor = 2.5
    19. Case Else
    20. 'keine Übereinstimmung des Werkstoffes gefunden
    21. XFactor = 1
    22. YFactor = 1
    23. End Select
    24. x = XFactor * d1
    25. y = YFactor * d1
    26. If l < x Or l > y Then
    27. MsgBox("Achtung! Die tragende Profillänge sollte im Intervall von " & x & "mm bis " & y & "mm liegen", 48, "Warnung")
    28. Else
    29. Exit Do
    30. End If
    31. Loop


    Wenn du noch weitere Werkstoffe behandeln willst(Automatenstahl, hochlegierte Stähle, etc.), kannst du einfach ein neues Case-Statement hinzufügen. Noch was: Den Werkstoff über Strings abzugleichen ist nciht gerade schön, bez. sicher.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Higlav“ ()

    @Marcus Gräfe: Es geht höchstwahrscheinlich um VBA für CatiaV5.
    @sanktangus: Du kennst doch sicher auch das CAD.DE-Forum, oder?