Verfasst: 29.04.2007 21:51

Ich hoffe die vom Forum werden mir nicht böse wenn ich immer so viel Code hier reinstelle. Aber ich weiss manchmal einfach nicht genau, was den nun wie wo wichtig ist.
Habe nun zur Verdauung angesetzt und meine verstanden zu haben was ihr geschrieben habt. (was für eine grössenwahnsinn).
Ich finde die Lösung in einem Threat gut. Habe nachgelesen in der Hilfe um was es geht, und sehe das es in grösseren Projekten mit viel Vorsicht zu geniessen ist, wegen dem Speicher und Timingmanagment. Jedoch hier ist es ganz nett so. Eigentlich habe ich mich wegen der Übersichtlichkeit für die Threat Variante entschieden, oder einach aus neugier und den Ansporn als Anfänger auch was komplizierteres verstehen zu können, wer weiss schon genau was in einem Männerhirn alles so geanu abgeht.

Danke PureLust für dein Erklärungen wegen den Prozeduren, das hat mir doch was Licht ins Dunkle gegeben.
So nun hier der versprochene Code
Code: Alles auswählen
; Mit Eneumeritation wird den Konstanten eine Fortlaufende Nummer vergeben anstelle dies von Hand zu machen.
Enumeration ; hier kommen alle Windows rein
#MainWindow
EndEnumeration
Enumeration ; hier kommen alle Menüitems rein
#neu
EndEnumeration
Enumeration ; hier kommen alle Gadgets rein
#StringZahl1
#StringZahl2
#StringZahl3
#StringErgebnis
#RichtigOderFalschText
#AnzahlRichtigeText
#AnzahlRichtigeWert
#AnzahlFalscherText
#AnzahlFalscherWert
#AktuelleDauer
EndEnumeration
Anzahl_Richtig = 0
Anzahl_Falsche = 0
t_start = ElapsedMilliseconds()
Procedure Zeit_Updaten(Dummy)
Shared t_start
Repeat
laufzeit_jetzt = ElapsedMilliseconds() - t_start
SetGadgetText(#AktuelleDauer, "Laufzeit:" + Str(laufzeit_jetzt/1000) + "s")
Delay(1000)
ForEver
EndProcedure
Procedure FillGadget()
SetGadgetText(#StringZahl1,Str(Random(10)))
SetGadgetText(#StringZahl2,Str(Random(10)))
SetGadgetText(#StringZahl3,"")
EndProcedure
Procedure rechne()
val1.s = GetGadgetText(#StringZahl1)
val2.s = GetGadgetText(#StringZahl2)
result = Val(val1)*Val(val2)
SetGadgetText(#StringErgebnis,Str(result))
If result = Val(GetGadgetText(#StringZahl3))
ProcedureReturn #True
EndIf
EndProcedure
If OpenWindow(#MainWindow,0,0,200,400,"Taschenrechner",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(#MainWindow))
; TextGadget(#PB_Any, 0, 10, 100, 20, "Erste Zahl")
TextGadget(#StringZahl1,20,30,20,20,Str(Random(10)))
TextGadget(#PB_Any, 41, 30, 20, 20, "*")
TextGadget(#StringZahl2,60,30,100,20,Str(Random(10)))
TextGadget(#PB_Any, 0, 70, 150, 20, "Resultat eingeben")
StringGadget(#StringZahl3,0,90,100,20,"",#PB_String_Numeric)
TextGadget(#PB_Any, 0, 120, 150, 20, "Neue Rechnung mit Enter")
TextGadget(#RichtigOderFalschText, 0, 140, 150, 40, "")
TextGadget(#StringErgebnis,160,140,100,20,"")
TextGadget(#AnzahlRichtigeText, 0, 180, 150, 20, "Anzahl Richtige")
TextGadget(#AnzahlRichtigeWert, 160, 180, 30, 20, "")
TextGadget(#AnzahlFalscherText, 0, 200, 150, 20, "Anzahl Falsche")
TextGadget(#AnzahlFalscherWert, 160, 200, 30, 20, "")
TextGadget(#AktuelleDauer, 0, 230, 150, 20, "Laufzeit: " + Str(laufzeit_jetzt/1000) + "s")
AddKeyboardShortcut(#MainWindow,#PB_Shortcut_Return,#neu)
SetActiveGadget(#StringZahl3)
CreateThread(@Zeit_Updaten(),0)
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Menu
If EventMenu() = #neu
If rechne()
Anzahl_Richtig = Anzahl_Richtig +1
SetGadgetText(#RichtigOderFalschText, "Richtig das Resultat war")
SetGadgetText(#AnzahlRichtigeWert, Str(Anzahl_Richtig))
Else
Anzahl_Falsch = Anzahl_Falsch +1
SetGadgetText(#RichtigOderFalschText, "Aber aber so was auch, das richtige Resultat lautet")
SetGadgetText(#AnzahlFalscherWert,Str(Anzahl_Falsch))
EndIf
FillGadget()
SetActiveGadget(#StringZahl3)
EndIf
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
EndSelect
Until EventID = #PB_Event_CloseWindow
End