WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   qbasic proggi in vb (http://www.wcm.at/forum/showthread.php?t=105408)

Potassium 13.08.2003 13:32

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

renew 13.08.2003 13:51

braucht man net viel umbaun....:

Code:

DIM x AS integer
DIM y AS integer 'obwohls natürlich auch single gibt, aber ich denk integer passt da besser

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

Und das ganze rufst jetzt noch mit einem Button oder was du auch immer haben willst auf, und schon hast deine Funktion. :)

Potassium 13.08.2003 13:59

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

renew 13.08.2003 14:08

Zitat:

Original geschrieben von potassium

funzt aber nicht wir ruf ich jetzt mit dem button auf

Was geht nicht? Gar nix - oder kommt eine Fehlermeldung?

Potassium 13.08.2003 14:35

es kommt ein fehlermeldung und zwar folgendes: feherl beim kompilieren: syntaxfehler und der pfeil zeigt auf: Private Sub Command1_Click()

renew 13.08.2003 15:10

Zitat:

Original geschrieben von potassium
es kommt ein fehlermeldung und zwar folgendes: feherl beim kompilieren: syntaxfehler und der pfeil zeigt auf: Private Sub Command1_Click()
hähh - versteh ich nicht! :confused:

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. :)

Potassium 13.08.2003 15:46

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.

Potassium 13.08.2003 15:49

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?

renew 13.08.2003 15:53

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. :)

Potassium 13.08.2003 16:05

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.

renew 13.08.2003 16:13

Zitat:

Original geschrieben von potassium
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.
ja hab ich ....

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. :)

Potassium 13.08.2003 16:16

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?

renew 13.08.2003 16:35

Zitat:

Original geschrieben von potassium
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?
was für eine Box?

Und normalerweise geht die msgbox immer mit einem klick auf ok (oder auch andere Buttons - je nachdem welche Parameter man übergibt) weg.

Potassium 13.08.2003 16:38

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"

Potassium 13.08.2003 17:07

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?

renew 13.08.2003 17:14

Zitat:

Original geschrieben von potassium
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?
aso alles klar. Man muss nicht alles selber machen. ;)

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

Potassium 13.08.2003 20:33

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.

wbendl 14.08.2003 16:05

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