Seite 1 von 3

Taschenrechner

Verfasst: 13.06.2005 21:17
von AirTokio
Hallo!

Ich bin ein extremer Anfänger in PureBasic und hab noch einige Probleme!
Ich hab hier angefangen einen Taschenrechner zu programmieren, blicke aber durch die ganzen klick Befehle noch nicht durch!
Könntet ihr mir bitte ganz langsam erklären, denn allein bekomm ich es einfach nicht hin :(

Code: Alles auswählen

 If OpenWindow(1, 288, 237, 246, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateStatusBar(2, WindowID())
    EndIf
    
    If CreateGadgetList(WindowID())
      StringGadget(3, 30, 20, 190, 40, "", #PB_String_Numeric)
      ButtonGadget(4, 30, 80, 40, 40, "1")
      ButtonGadget(5, 80, 80, 40, 40, "2")
      ButtonGadget(6, 130, 80, 40, 40, "3")
      ButtonGadget(7, 30, 130, 40, 40, "4")
      ButtonGadget(8, 30, 230, 40, 40, "0")
      ButtonGadget(9, 80, 130, 40, 40, "5")
      ButtonGadget(10, 80, 180, 40, 40, "8")
      ButtonGadget(11, 130, 130, 40, 40, "6")
      ButtonGadget(12, 130, 180, 40, 40, "9")
      ButtonGadget(13, 30, 180, 40, 40, "7")
      ButtonGadget(14, 190, 80, 50, 30, "+")
      ButtonGadget(15, 190, 120, 50, 30, "-")
      ButtonGadget(16, 190, 160, 50, 30, "*")
      ButtonGadget(17, 190, 200, 50, 30, "/")
      ButtonGadget(18, 190, 240, 50, 30, "=")
      EndIf
  EndIf



  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    
           If EventID = #PB_Event_Gadget
           If EventGadgetID()=4
             
           EndIf


           If EventGadgetID()=5
             
           EndIf

   
   
   
   
    EndIf
    

  
  Until Quit=1

End
Danke schonmal fürs Lesen :allright:

Verfasst: 13.06.2005 21:26
von ts-soft
Habs mal ein klein bissel erweitert:

Code: Alles auswählen

If OpenWindow(1, 288, 237, 246, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateStatusBar(2, WindowID())
    EndIf
   
    If CreateGadgetList(WindowID())
      StringGadget(3, 30, 20, 190, 40, "", #PB_String_Numeric | #PB_Text_Right)
      ButtonGadget(4, 30, 80, 40, 40, "1")
      ButtonGadget(5, 80, 80, 40, 40, "2")
      ButtonGadget(6, 130, 80, 40, 40, "3")
      ButtonGadget(7, 30, 130, 40, 40, "4")
      ButtonGadget(8, 30, 230, 40, 40, "0")
      ButtonGadget(9, 80, 130, 40, 40, "5")
      ButtonGadget(10, 80, 180, 40, 40, "8")
      ButtonGadget(11, 130, 130, 40, 40, "6")
      ButtonGadget(12, 130, 180, 40, 40, "9")
      ButtonGadget(13, 30, 180, 40, 40, "7")
      ButtonGadget(14, 190, 80, 50, 30, "+")
      ButtonGadget(15, 190, 120, 50, 30, "-")
      ButtonGadget(16, 190, 160, 50, 30, "*")
      ButtonGadget(17, 190, 200, 50, 30, "/")
      ButtonGadget(18, 190, 240, 50, 30, "=")
      EndIf
  EndIf


  Anzeigetext.s
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
   
           If EventID = #PB_Event_Gadget
           If EventGadgetID()=4
              Anzeigetext + Str(1)
             SetGadgetText(3, Anzeigetext) 
           EndIf


           If EventGadgetID()=5
             Anzeigetext + Str(2)
             SetGadgetText(3, Anzeigetext) 
           EndIf

   
   
   
   
    EndIf
   

 
  Until Quit=1

End

Verfasst: 13.06.2005 21:29
von AirTokio
Wow danke jetzt zeigt der schonmal die zahlen von 1-2 oben an!
Ich versteh den Befehl trotzdem nich!

Code: Alles auswählen

           If EventGadgetID()=5
             Anzeigetext + Str(2)
             SetGadgetText(3, Anzeigetext)
           EndIf 
Was bedeutet das: Anzeigetext + Str(2)
SetGadgetText(3, Anzeigetext)

Könnteste mir das bitte noch erklären?

Verfasst: 13.06.2005 21:31
von Green Snake
das 2 ändert den text von gadget 3, der neue test ist glecih dem anzeigetext string.

beim ersten, weis ich auch nicht so genau, kann nicht mehr genau nachschauen, bin müde, aber ich glaube, dass wandelt 2 in einen string um :allright:

Verfasst: 13.06.2005 21:34
von Rubiko
dann sags ich:
in den feld da oben können nur stringwerte angezeigt werden, und str(2) ändert 2 eben in einen string

Code: Alles auswählen

setgadgettext(3, anzeigetext)
ändert also den text der oben is vom gadget 3 in den wert von anzeigetext, also '2'

EDIT: jetzt haste ja ne auswahl ,wenn du was nicht verstehst :D

Verfasst: 13.06.2005 21:34
von ts-soft
>> Was bedeutet das: Anzeigetext + Str(2)
>> SetGadgetText(3, Anzeigetext)
Anzeigetext ist die Stringvariable, die den Inhalt der Anzeige enthält. Wenn nun der Button 1 gedrückt wird füge ich eine "1" oder so Str(1) hinzu.
Mit SetGadgetText ändere ich die gesamte Anzeige, deren Text sich ja in Anzeigetext befindet.

Anzeigetext + Str(2) kann man auch so schreiben:

Code: Alles auswählen

Anzeigetext.s = Anzeigetext.s + "2"

Verfasst: 13.06.2005 21:52
von AirTokio
So wow habt ihr hier eine schnelle und tolle Community ;)

Habs jetzt mal verändert:

Code: Alles auswählen

    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
   
           If EventID = #PB_Event_Gadget
           If EventGadgetID()=4
              Anzeigetext + Str(1)
             SetGadgetText(3, Anzeigetext)
           EndIf


           If EventGadgetID()=5
             Anzeigetext + Str(2)
             SetGadgetText(3, Anzeigetext)
           EndIf

   
           If EventGadgetID()=6
             Anzeigetext + Str(3)
             SetGadgetText(3, Anzeigetext)
           EndIf


           If EventGadgetID()=7
             Anzeigetext + Str(4)
             SetGadgetText(3, Anzeigetext)
           EndIf


           If EventGadgetID()=8
             Anzeigetext + Str(0)
             SetGadgetText(3, Anzeigetext)
           EndIf
   

           If EventGadgetID()=9
             Anzeigetext + Str(5)
             SetGadgetText(3, Anzeigetext)
           EndIf   


           If EventGadgetID()=10
             Anzeigetext + Str(8)
             SetGadgetText(3, Anzeigetext)
           EndIf
           
   
           If EventGadgetID()=11
             Anzeigetext + Str(6)
             SetGadgetText(3, Anzeigetext)
           EndIf


           If EventGadgetID()=12
             Anzeigetext + Str(9)
             SetGadgetText(3, Anzeigetext)
           EndIf


           If EventGadgetID()=13
             Anzeigetext + Str(7)
             SetGadgetText(3, Anzeigetext)
           EndIf

    EndIf
   

 
  Until Quit=1

End
So! Also Anzeigetext ist eine Variable und der wird der umgerechnete (in String) Wert 7 dazugetahn. Durch SetGardgetText heisst das er den Text verändern soll (3, <- ist die ID, Anzeigetext ist wieder die Variable mit dem wert.)
Stimmt das? Wenn ja dank ich euch allen! Ihr seid hammer ;)
Aber wie rechne ich jetzt wieter. Die Eingabe hat er schonmal, aber wie rechnet er jetzt?

Verfasst: 13.06.2005 22:06
von ts-soft
>> Aber wie rechne ich jetzt wieter. Die Eingabe hat er schonmal, aber wie rechnet er jetzt?
Wenn zum Beispiel "+" gedrückt wird, merkst Du dir das + und den aktuellen Anzeigetext in einer anderen Variablen
ErsteZahl = Str(Anzeigetext.s)
Funktion, = "+"

jetzt die Anzeige löschen, neue Eingaben Abwarten und bei "=" die Werte Addieren.

Versuch das einfach mal Schritt für Schritt nachzuvollziehen, laß Dir die Werte Deiner Variablen mit dem Debugger Anzeigen, also so:

Code: Alles auswählen

Debug anzeigetext
Debug funktion
Debug ErsteZahl
usw.

Verfasst: 13.06.2005 22:08
von Rubiko
du machst jetzt einfach eine neue variable in der die rechenart gespeicher ist.

dann überprüfst du per if, welche rechenart verwendet ist...
ist addition zum beispiel: zahl1 + zahl2

also

Code: Alles auswählen

if eventgadget()=14
   rechenart = addition
endif
du musst noch zwei variablen machen in denen die zwei zahlen gespeichert werden, und dann eben zu den eventgadget() abfragen hinzumachen...

Code: Alles auswählen

; dann einfach
if rechenart = addition
   zahl1 + zahl2
endif
wenn das jetzt nicht klar is, kann dir jemand bestimmt ein beispiel geben, im forum, ich hab nimmer viel zeit.. aber wer weiß... ^^

Verfasst: 13.06.2005 22:19
von AirTokio
Verstehe nicht ganz wie es funktioniert!
Hab mal dies nach euren Beiträgen geschrieben:

Code: Alles auswählen

       If EventGadgetID()=14
          ErsteZahl$ = Str(Anzeigetext)
          rechenart = addition
       EndIf 



       If EventGadgetID()=18
          ZweiteZahl$ = Str(Anzeigetext)
       EndIf 






   If rechenart = addition
      ErsteZahl$ + ZweiteZahl$
   EndIf 
Funktioniert bloss nicht... Wie gesagt bin halt ein Anfänger!