![]() |
qbasic proggi in vb
hi leute
ich will folgendes q-basic proggi in visual basic schreiben CLS DIM x AS SINGLE DIM y AS SINGLE RANDOMIZE TIMER y = INT(RND * 100) + 1 DO INPUT "Bitte geben Sie eine Zahl ein:", x IF x < y THEN PRINT " zu klein" ELSEIF x > y THEN PRINT "zu groß" ELSE PRINT "Richtig" END IF LOOP UNTIL x = y END so und das jetzt mit graphischem hintergrund. kann mir da jemand helfen. mfg |
braucht man net viel umbaun....:
Code:
DIM x AS integer |
hab jetzt so!
allgemein: Deklaration: Dim x As Integer Dim y As Integer 'obwohls natürlich auch single gibt, aber ich denk integer passt da besser Command1 Click: Private Sub Command1_Click() Randomize y = Int((100 - 0 + 1) * Rnd) + 0 Do x = InputBox "Bitte geben Sie eine Zahl ein:" If Int(x) < y Then msgbox " zu klein" ElseIf Int(x) > y Then msgbox "zu groß" Else msgbox "Richtig" End If Loop Until Int(x) = y End Sub funzt aber nicht wir ruf ich jetzt mit dem button auf |
Zitat:
|
es kommt ein fehlermeldung und zwar folgendes: feherl beim kompilieren: syntaxfehler und der pfeil zeigt auf: Private Sub Command1_Click()
|
Zitat:
mach einfach einen neuen button - klick den doppelt an (dann wird normalerweise die Funktion im code erstellt - also private sub Button_click() end sub ) Und dort fügst den Code noch einmal ein. Weil das geht eigentlich ohne Probleme. :) |
also es funzt jetzt so weit das er mir sag t zu klein oder zu groß aber er schreibt es nicht in die msgbox sondern auf den linken rand des programms und hängt sich danach auf.
|
ach ja nochwas wie kann ich ihm sagen das er es in die msgbox reischreibt mit print.msgbox funtzt es nicht und mit msgbox.print auch ned wie gehts das?
|
Mir is grad noch ein Fehler aufgefallen.... (komisch dass er gar nix beim Kompilieren gesagt hat)
Die Version die Sicher funktioniert hab ich als VBS-File angehängt. Es ist halt nicht in einer Funktion eingebettet, sonder wird einfach beim Starten des VBS Files ausgeführt. War die einzige schnelle Möglichkeit die ich grad hab, weil in der Firma is nix mit VB 6.0 .... ;) PS: ich hab noch eine msgbox eingefügt die mir die Zahl vorher verrät - damit das Testen schneller funktioniert. :) |
hast du zaus vb 6.0? wenn kannst du uns das formular etc schicken damit ich auch seh wie das funzt. ich hab mal das upgeloadet was ich bis jetzt hab.
|
Zitat:
ich glaube aber, dass ich heute nicht mehr dazu kommen werde. Weil ich kommt nur kurz heim, und muss dann gleich wieder weg. Aber spätestens morgen am abend gehts sicher. :) |
ich hab mein problem jetzt gefunden. ich hab ein box namens msgbox angelegt *hüstel* *peinlich* aber nun geht meine msgbox ncht mehr weg. wenn ich auf ok klick bleibt sie. wie mach ich das jetzt das wenn ich auf ok klick die box wieder weg geht?
|
Zitat:
Und normalerweise geht die msgbox immer mit einem klick auf ok (oder auch andere Buttons - je nachdem welche Parameter man übergibt) weg. |
welche parameter? und mit box mein ich die msgbox? die geht ned weg wenn i auf ok klick
macn kann die box wede mit ok wegbekommen noch mit dem x rechts oben nur mit dem taskmanager brutal "abwürgen" |
nun funzt es mir war nicht klar das ich keine boxen selber machen darf. sondern das InputBox und mfgbox vom proggi selbst gemacht werden. thx für alles und noch eine letzte frage: wie kann ich bewirken das wenn man auf abrechen bei der ratezahlabrage klickt keine fehlermeldung kommt sondern das er abbricht?
|
Zitat:
Um keine Fehlermeldung zu kassieren: oben im Kopf noch: dim strX as string statt dem "x = InputBox "Bitte geben Sie eine Zahl ein:"" kommt folgendes: strX = input("Geben Sie eine Zahl ein") if strX <> "" and isnumeric(strX) then x = int(strX) else msgbox "Keine Zahl" 'oder was du auch machen willst ... ;) end if |
thx das is auch eine lösung allerdings hab ich das jetz so gemacht:
Private Sub Command1_Click() Randomize y = Int((1000 - 0 + 1) * Rnd) + 1 z = 1 Do strX = InputBox("Geben Sie eine Zahl ein") If strX <> "" And IsNumeric(strX) Then x = Int(strX) Else MsgBox "Keine Zahl" End End If If Int(x) < y Then MsgBox " zu klein ", (vbOKOnly), ("Zahlenraten") z = z + 1 ElseIf Int(x) > y Then MsgBox " zu groß ", (vbOKOnly), ("Zahlenraten") z = z + 1 Else MsgBox z, (vbOKOnly), ("Benötigte Versuche") End If Loop Until Int(x) = y End Sub also wenn man jetz einen buchctaben etc eingibt und man dann auf ok klickt bricht er ab. das is deswegen so weil er sonst immer gezeigt hätte: " zu klein" nun hätte ich aber gerne das er statt zu beenden wieder zu dem eintrag zahlen geht. wie geht das? PS: anbei die datei. |
Hi!
Also um bei einer ungültigen Eingabe zurück zum Start zu kommen gibt es mehrere Wege. 1. Eine Schleife, mit der die Inputbox solange immer wieder aufgerufen wird, bis die Eingabe gültig ist. 2. Einen Teil des Codes in eine eigene Prozedur auslagern, die sich rekursiv aufrufen kann. Es spricht übrigens nichts dagegen, eine eigene "Inputbox" zu verwenden. Damit könntest du Funtionen einbauen, die in der Standardversion nicht vorhanden sind. Noch ein Tip für die Zukunft: Variable mit möglichst geringer Gültigkeit deklarieren. Das heißt in diesem Fall die Variablen in der Prozedur deklarieren, und nicht im Modul. Das ist übersichtlicher und beugt Problemen vor. Wenn die Variablen auch in anderen Prozeduren zur Verfügung stehen sollen, dann die Parameterübergabe verwenden (Bevorzugt "ByVal"). Parameter die als Rückgabe verwendet werden "ByRef". mfg WB |
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag