Seite 1 von 4

Rechner

Verfasst: 08.04.2008 11:27
von The_Dark_Zim-.-
Hey ho
Ich hab mir einen ganz normalen Taschenrechner gemacht. Hab allerdings noch ein paar Probleme, die ich im mom nicht raus bekomme, bitte euch darum um hilfe :wink:

Also mein Problem ist das ich keine kommaeingabe über die Tasten machen kann, da das komma dann immer verschwindet!?!?!?! 2. Problem ist , wenn man nach einer Rechnung eine Zahl eingibt, diese dann hinten dran gehängt wird, is eigentlich auch Richtig das er es macht, soll er aber nich :mrgreen: , heißt er soll eine neue Rechnung anfangen und nicht die nachvolgenden zahlen anhängen wie er es jetzt macht.

Hoffe ich schreib nicht zu verwiert :freak:

Hier der Code:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #String_0
  #Button_0
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  #Button_10
  #Button_11
  #Button_12
  #Button_13
  #Button_14
  #Button_15
  #Button_16
  #Button_17
EndEnumeration

Global FontID1
FontID1 = LoadFont(1, "Arial", 10, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Arial", 14)
Global FontID3
FontID3 = LoadFont(3, "Arial", 22)

InitKeyboard() And InitSprite()

  If OpenWindow(#Window_0, 511, 245, 518, 548, "Rechner",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered ) 
   If OpenWindowedScreen(WindowID(0), 511, 245, 518, 548, 0, 0, 0) 
    If CreateGadgetList(WindowID(#Window_0))
      StringGadget(#String_0, 20, 40, 480, 30, "")
      SetGadgetFont(#String_0, FontID2)
      ButtonGadget(#Button_0, 20, 140, 60, 60, "CE")
      SetGadgetFont(#Button_0, FontID2)
      ButtonGadget(#Button_1, 100, 140, 60, 60, "/")
      SetGadgetFont(#Button_1, FontID2)
      ButtonGadget(#Button_2, 180, 140, 60, 60, "X")
      SetGadgetFont(#Button_2, FontID2)
      ButtonGadget(#Button_3, 20, 220, 60, 60, "7")
      SetGadgetFont(#Button_3, FontID2)
      ButtonGadget(#Button_4, 100, 220, 60, 60, "8")
      SetGadgetFont(#Button_4, FontID2)
      ButtonGadget(#Button_5, 180, 220, 60, 60, "9")
      SetGadgetFont(#Button_5, FontID2)
      ButtonGadget(#Button_6, 20, 300, 60, 60, "4")
      SetGadgetFont(#Button_6, FontID2)
      ButtonGadget(#Button_7, 100, 300, 60, 60, "5")
      SetGadgetFont(#Button_7, FontID2)
      ButtonGadget(#Button_8, 180, 300, 60, 60, "6")
      SetGadgetFont(#Button_8, FontID2)
      ButtonGadget(#Button_9, 260, 140, 60, 60, "-")
      SetGadgetFont(#Button_9, FontID3)
      ButtonGadget(#Button_10, 260, 220, 60, 140, "+")
      SetGadgetFont(#Button_10, FontID2)
      ButtonGadget(#Button_11, 260, 380, 60, 140, "OK")
      SetGadgetFont(#Button_11, FontID2)
      ButtonGadget(#Button_12, 180, 380, 60, 60, "3")
      SetGadgetFont(#Button_12, FontID2)
      ButtonGadget(#Button_13, 100, 380, 60, 60, "2")
      SetGadgetFont(#Button_13, FontID2)
      ButtonGadget(#Button_14, 20, 380, 60, 60, "1")
      SetGadgetFont(#Button_14, FontID2)
      ButtonGadget(#Button_15, 20, 460, 140, 60, "0")
      SetGadgetFont(#Button_15, FontID2)
      ButtonGadget(#Button_16, 180, 460, 60, 60, ",")
      SetGadgetFont(#Button_16, FontID3)
      ButtonGadget(#Button_17, 390, 460, 110, 60, "EXIT")
      SetGadgetFont(#Button_17, FontID2)
      
    EndIf
   EndIf
  EndIf

 Repeat
  
  Event = WaitWindowEvent()
  
  WindowID = EventWindow() 
  
  GadgetID = EventGadget() 
  
  EventType = EventType() 
    
ExamineKeyboard()
If KeyboardPushed (1)
End
EndIf  

If KeyboardPushed (#PB_Key_Subtract)
   a.f=0
   b.f=0
   c.f=0
   d.f=1
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   f.f=ValF(GetGadgetText(#string_0))
EndIf

  If Event = #PB_Event_Gadget
    
    If GadgetID = #String_0

    ElseIf GadgetID = #Button_0
    StringGadget(#String_0, 20, 40, 480, 30, "")
    SetGadgetFont(#String_0, FontID2)
    ElseIf GadgetID = #Button_1 ;/
   a.f=1
   b.f=0
   c.f=0
   d.f=0
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   f.f=ValF(GetGadgetText(#string_0))
   
   StringGadget(#String_0, 20, 40, 480, 30, "")
   SetGadgetFont(#String_0, FontID2)
   
    ElseIf GadgetID = #Button_2 ;x
    
   a.f=0
   b.f=1
   c.f=0
   d.f=0
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   f.f=ValF(GetGadgetText(#string_0))
   
   StringGadget(#String_0, 20, 40, 480, 30, "")
   SetGadgetFont(#String_0, FontID2) 
  
    ElseIf GadgetID = #Button_3
    ;7
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=7
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 7
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"7")
    7:
    ElseIf GadgetID = #Button_4
    ;8
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=8
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 8
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"8")
    8:
    ElseIf GadgetID = #Button_5
    ;9
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=9
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 9
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"9")
    9:
    ElseIf GadgetID = #Button_6
    ;4
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=4
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 4
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"4")
    4:
    ElseIf GadgetID = #Button_7
    ;5
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=5
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 5
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"5")
    5:
    ElseIf GadgetID = #Button_8
    ;6
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=6
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 6
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"6")
    6:
    
    ElseIf GadgetID = #Button_12
    ;3
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=3
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 3
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"3")    
    3:
    ElseIf GadgetID = #Button_13
    ;2
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=2
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 2
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"2")
    2:
    ElseIf GadgetID = #Button_14
    ;1
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=1
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 1
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"1")
    1:
    ElseIf GadgetID = #Button_15
    ;0
    x.f=ValF(GetGadgetText(#string_0))
    If x.f =0
    x.f=0
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f))
    Goto 0
    EndIf
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+"0")
    0:
    ElseIf GadgetID = #Button_16
    ;,
    x=ValF(GetGadgetText(#string_0))
    StringGadget(#String_0, 20, 40, 480, 30, Str(x)+".")
    y=1
    ElseIf GadgetID = #Button_17
    End
    EndIf
    
   ElseIf GadgetID = #Button_9 ;-
   a.f=0
   b.f=0
   c.f=1
   d.f=0
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   f.f=ValF(GetGadgetText(#string_0))
   
   StringGadget(#String_0, 20, 40, 480, 30, "")
   SetGadgetFont(#String_0, FontID2)
   
   ElseIf GadgetID = #Button_10 ;+
   a.f=0
   b.f=0
   c.f=0
   d.f=1
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   f.f=ValF(GetGadgetText(#string_0))
   
   StringGadget(#String_0, 20, 40, 480, 30, "")
   SetGadgetFont(#String_0, FontID2)
   
   ElseIf GadgetID = #Button_11
   ;ok
   SetGadgetText(0, ReplaceString(GetGadgetText(0),",","."))
   g.f=ValF(GetGadgetText(#string_0))
    
       If c=1
   e.f=f.f-g.f
   StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2))
   SetGadgetFont(#String_0, FontID2)
   EndIf
   
       If a=1
   e.f=f.f/g.f
   StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2))
   SetGadgetFont(#String_0, FontID2)
   EndIf
   
       If b=1
   e.f=f.f*g.f
   StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2))
   SetGadgetFont(#String_0, FontID2)
   EndIf
   
       If d=1
   e.f=f.f+g.f
   StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2))
   SetGadgetFont(#String_0, FontID2)
   EndIf
    
  EndIf

Until Event = #PB_Event_CloseWindow 

End
Ist etwas durcheinander und vermutlich auch ziehmlich stümperhaft aber bin halt noch am lernen nehme tipps gerne an ;)

Thx für alle die helfen oder sich die Mühe machen es zu Lesen is ja nicht gerade wenig :P
(Und sry für Rechtschreibung und Gramatik :lol: :oops: )[/b]

Verfasst: 08.04.2008 15:16
von The_Dark_Zim-.-
HM scheint doch kein so einfaches problem zu sein :?
(Pusch)

Verfasst: 08.04.2008 15:32
von Kiffi
The_Dark_Zim-.- hat geschrieben:HM scheint doch kein so einfaches problem zu sein :?
wieso? Weil sich nach unendlich langen 4 Stunden noch niemand gemeldet hat? :roll:
The_Dark_Zim-.- hat geschrieben:(Pusch)
Pushen darfst Du nach Tagen, nicht nach Stunden.

Verfasst: 08.04.2008 15:56
von The_Dark_Zim-.-
jaja is ja schon gut ich bin ruhig bis ich nach tagen keine antwort bekommen hab sry <)

Verfasst: 08.04.2008 16:13
von Kaeru Gaman
manchmal wird in diesem forum durchaus sehr schnell geantwortet.
das sind dann aber oftmals fragen, zu denen mehrere kollegen die lösungen schon parat haben,
weil sie selber schon vor dem problem standen oder es schon x-mal gefragt wurde.

bei deinem problem muss man sich schon zeit nehmen, und dann ist eben die frage, wer da jetzt zeit und bock zu hat.


> 2. Problem ist , wenn man nach einer Rechnung eine Zahl eingibt, diese dann hinten dran gehängt wird, is eigentlich auch Richtig das er es macht, soll er aber nich Mr. Green , heißt er soll eine neue Rechnung anfangen und nicht die nachvolgenden zahlen anhängen wie er es jetzt macht.

führe ein Flag ein, das notiert, wenn die letzte eingabe "=" war.
wenn das der fall ist, löscht die nächste zahl das display, ansonsten nicht.


btw. deine interpunktion könntest du mal überarbeiten. schlangensätze mit 37 kommata sind schwierig zu lesen. ;)

Verfasst: 08.04.2008 16:29
von Kiffi
@The_Dark_Zim-.-

Du könntest uns (und später dann auch Dir selber) schon mal die Arbeit
erleichtern, indem Du Dir angewöhnst, Deinen Code vernünftig einzurücken.

Wenn Du das von vorherein gemacht hättest, dann wärst Du auch recht
schnell darauf gekommen, dass Du an dieser Stelle schon mal ein
strukturelles Problem hast. Das solltest Du erst einmal beheben:

Code: Alles auswählen

[...]
  ElseIf GadgetID = #Button_17
    End
  EndIf
   
ElseIf GadgetID = #Button_9 ;- 
[...]
Ebenso würde es das Lesen des Codes einfacher machen, wenn Du die
Konstanten sinnvoll benennen würdest. Es ist für uns (uns später auch für
Dich) schwierig, zwischen #Button_1 und #Button17 zu unterscheiden.

Benenne die Konstanten doch einfach #Button_Zahl_0 bis #Button_Zahl_9
für die Zahlenbuttons und dann #Button_Multiplizieren, Button_Dividieren,
etc. etc.

Also: Da hast Du schon mal was zu tun. Vielleicht findest Du beim
überarbeiten Deine Fehler von selber. Wenn nicht, dann kannst Du gerne
noch einmal (mit dem überarbeiteten Code) nachfragen. :-)

Grüße ... Kiffi

Verfasst: 08.04.2008 16:58
von The_Dark_Zim-.-
Okey, dann geh ich das nochmal durch, auch wenn ich nich so recht auf Ordnung achte, weil ich es nich brauch, aber ist später bestimmt sinnvoll.

Der Code is sowieso noch nicht fertig, ein paar kleinigkeiten will ich noch ändern. Wollte aber das nu erstmal soweit haben, das es funktionsmässig geht.

Verfasst: 08.04.2008 17:35
von Kiffi
The_Dark_Zim-.- hat geschrieben:auch wenn ich nich so recht auf Ordnung achte, weil ich es nich brauch
wie geschrieben: Wenn Du 'Ordnung gehalten' hättest, wäre Dir zumindest
ein kapitaler Fehler selber aufgefallen, bzw. Du hättest ihn nicht erst gar nicht
gemacht.

Grüße ... Kiffi

Verfasst: 09.04.2008 10:54
von The_Dark_Zim-.-
ääähm müssen die Buttons in der richtigen Reinfolge stehen?!?!?!
Also Button 1
Button 2
oder is das egal???
Weil wegen hab das geordnet und nu gehts nicht mehr richtig :evil:

Hab normalerweise keinen Fehler reingebracht, außer man darf die buttons nicht umsortieren, bzw. ich wüsste nich wo -.-

Guck mir das aber noch mal an.

Verfasst: 09.04.2008 11:04
von Fluid Byte
"Weil wegen hab das geordnet ..."?

Onga Bonga? :?: