VeryBasics2010- Schleife, Prozedur(?)-Aufruf,

  • VB.NET

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

    VeryBasics2010- Schleife, Prozedur(?)-Aufruf,

    Hi Freunde der Programmierkunst!

    Ich habe vor etwa 10 Jahren meine letzten Programmiererfahrungen mit VB5 gemacht,
    und selbst die waren damals sehr rudimentär. Nun bin ich jetzt wieder voller Tatendrang,
    und will das endgültig lernen. 8-) Hab mir 2010 Express geholt nun steh vor ein paar kleinen
    Problemen. Vielleicht hat ja wer Lust und die Zeit mir zu helfen:

    Die erste Frage wird wohl schnell beantwortet sein:
    In VB5 war es meiner sonst sehr guten Erinnerung nach möglich, eine Prozedur (Gott,
    ich hoff das nennt sich jetzt so, und ich mach mich nicht lächerlich :S) in einer anderen
    aufzurufen. Am besten ich codier es einfach mal... In VB5 sah es etwa so aus:

    Private Sub Button2_Click()
    <ANWEISUNGx>
    Button1_Click()
    End Sub

    Das hatte zur Folge, dass die anweisung x ausgeführt wurde, und danach alles, was in
    der zugehörigen Prozedur des Button1 bei einem Click-Ereignis passieren sollte. Die
    Syntax mag VB in 2010 ja schlucken, aber wieso geht das nicht mehr? Gibt es eine andere,
    elegante Möglichkeit, oder sollte ich das alles in eine Subroutine schreiben und einfach aufrufen?


    Mein zweites Problem liegt an dem Programm dass ich grade schreibe, ein Matheprogramm zum üben.
    Dabei will ich haben, dass bei Subtraktionen gewählt werden kann, ob negative Zahlen rauskommen
    können oder nicht. Leider sind meine Kenntnisse zur Schleife zu eingerostet, als dass ich es noch hinkriege.
    Was ich suche ist eine Schleife, die solange Zahl1 und Zahl2 als neues Random ausgibt, bis Zahl1 größer
    als Zahl2 ist. Mein momentan erfolgreichster Versuch sieht so aus (scheint ab und an in der Schleife zu hängen):

    Do Until Zahl1 > Zahl2
    If Zahl2 > Zahl1 Then Exit Sub
    If Zahl1 > Zahl2 Then
    Exit Do
    Else
    Randomize()
    Zahl1 = Randomizer.Next(Zufallsbereich)
    Randomize()
    Zahl2 = Randomizer.Next(Zufallsbereich)
    End If
    Loop

    Mit bestem Dank an denjenigen, der sich Zeit nimmt

    SheiraWaansynn
    Guten Morgen,


    Subs die von einen Handle ausgelöst werden, wie verscheinlich dein ButtonClick kann man nicht manuell aufrufen, ansonsten rufst du deine eigene Prozedur so auf:

    VB.NET-Quellcode

    1. Private Sub MeineFunktion(Byval sFile as String)
    2. End Sub
    3. MeineFuntion("C:\file") 'Aufruf mit Parameter



    Nun für deine Schleife:

    Ich glaube das Problem lag darin, das du bei den Random falsche Parameter aufrufst:

    VB.NET-Quellcode

    1. Randomizer.Next(Startwert, Maximalwert)


    So funktioniert es

    VB.NET-Quellcode

    1. Dim Zahl1 As Integer = 0
    2. Dim Zahl2 As Integer = 0
    3. Do While Not Zahl1 > Zahl2
    4. Dim sRandom As New Random
    5. Zahl1 = sRandom.Next(0, 500)
    6. Zahl2 = sRandom.Next(0, 500)
    7. If Zahl1 > Zahl2 Then
    8. Exit Do
    9. End If
    10. Loop
    11. MsgBox(Zahl1 & " > " & Zahl2)



    Grüße
    @Sheira: Die Aufrufe-Syntax funzt heute genau wie damals - das sind die Basics strukturierter Programmierung (ein noch älteres Konzept als - und Grundlage von - OOP). (klar kann man auch EventHandler-Subs aufrufen - muß man halt passende Argumente angeben (etwa Nothing) - nur ist das ziemlich schlechter Stil)
    Allerdings sind inzwischen jede Menge weiterer Konzepte hinzugekommen, sodaß du nur dann ernstzunehmenden Code wirst produzieren können, wenn du dir die Grundlagen antust, also dieses Buch Lesen. (Ich sag "dieses", weil es fahren einige andere Openbooks herum, die besser nicht herumfahren würden.)

    Im Verlauf des Buch lesens werden dir vmtl. verschiedene Ideen kommen, wie du deinen MatheParser umsetzen und erweitern kannst.

    Achso, dann gibts hier noch den fabelhaften "vb" - Button, mit dem du deine Code-Posts lesbar gestalten kannst:

    VB.NET-Quellcode

    1. Do Until Zahl1 > Zahl2
    2. If Zahl2 > Zahl1 Then Exit Sub
    3. If Zahl1 > Zahl2 Then
    4. Exit Do
    5. Else
    6. Randomize()
    7. Zahl1 = Randomizer.Next(Zufallsbereich)
    8. Randomize()
    9. Zahl2 = Randomizer.Next(Zufallsbereich)
    10. End If
    11. Loop
    Jo, Randomizer ist schomal was, wassichnich kenne - da nimmt man ein Random-Objekt für.
    Wo du das hernimmst - steht im Buch, aber vlt. willsteja auch im ObjectBrowser danach suchen - kennste ObjectBrowser? Eines der Teile, ohne die man eiglich nicht vernünftig proggen kann.

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

    Vielen Dank für die schnellen Antworten! Hät nicht gedacht Sonntag morgens so schnell zu einem Ergenis zu kommen.

    Hab da auf jeden Fall noch einiges zum 'nachholen' und lernen, aber das ist ja das schöne daran. Ich hoff es kommen
    noch ein paar sachen wie die Schleife auf mich zu, finde das alles irre interessant.

    Zum Thema Bücher, hab mir eines besorgt, von Galileo Computing - Einstieg in VB2010
    Irgendwelche Erfahrungswerte damit? Oder eine Ahnung obs was taugt?

    Also gleich mal wieder vor den Code geklemmt, und mit vielen Dank :D

    SheiraWaansynn schrieb:

    Zum Thema Bücher, hab mir eines besorgt, von Galileo Computing - Einstieg in VB2010
    Irgendwelche Erfahrungswerte damit? Oder eine Ahnung obs was taugt?

    Bitte lies dir den von mir gegebenen Link zum Thema Buch lesen auch durch - sowas nervt mich, wenn ich erkennen muß, dass meine Einlassungen überhaupt nicht aufgefasst werden.
    Ich persölich finde mit Online Buch lernen nicht so schön, als wie wenn man es vor sich liegen hat. Ich habe folgende Bücher: (Noch aus VB6 Zeiten)

    -Visual Basic 6 - Grundlagen und Profiwissen
    -Webseiten - programmieren und gestalten (MySQL)
    -Visual Basic 6.0 - Schnell und einfach lernen

    Eigentlich für die Grundlagen ganz gut. Noch besser lernt man aber hier durch das Forum, einfach mal in die Threads gucken, und schauen was die anderen so machen.



    Grüße

    ErfinderDesRades schrieb:

    Bitte lies dir den von mir gegebenen Link zum Thema Buch lesen auch durch - sowas nervt mich, wenn ich erkennen muß, dass meine Einlassungen überhaupt nicht aufgefasst werden.
    Sorry, ErfinderDesRades, war nicht gemeint dass ich dich ignoriere, ich werde das auch durchackern, wie jede lektüre die ich dazu finde.
    Ich wollte nur gleich in den raum stellen ob jemand erfahrung mit dem buch hat, des ich schon besitze, oder ob ich es
    gleich gegen deine lektüre eintauschen sollte.
    naja, dein in den raum stellen, ohne Bezugnahme auf den Inhalt meines Links zeigt mir doch, dass du ihn nicht zur kenntnis genommen hast. Denn darin bespreche ich doch eingehend meine Erfahrungen mit dem Galileo-Book, und mache ausführlich begründete Aussagen darüber, was es taugt.