Seite 1 von 2

RECHNEN in PB

Verfasst: 11.07.2009 14:28
von Holgersson
Hallo

so jetzt habe ich mich mal 2-3 Tage mit PB beschäftigt.
Nicht wie in QB/VB kann ich beim rechnen einfach das + z.B. durch - austauschen. Vielleicht kann mir ja jemand helfen um mir den umstieg zu PureBasic etwas zu erleichtern. Hängt das evtl. mit der umwandlung Str/Val zusammen?

+ Rechnen funktioniert! Nur wie rechne ich - , * und / ???

habe mich überall durchgelesen doch leider nichts dazu gefunden :-(

Vielen Dank schonmal im vorraus für den, der es mir erklären kann, DANKE!!


in PB vers. 4.31 geschrieben

Code:

Code: Alles auswählen

#WindowWidth  = 420
#WindowHeight = 170

Enumeration 
  #zahl1 
  #zahl2
  #gesamt
EndEnumeration

If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "TEST-RECHNENPROGRAMM", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)

StringGadget(#zahl1, 70,  40, 90, 20, "", #PB_String_Numeric)
StringGadget(#zahl2, 70,  80, 90, 20, "", #PB_String_Numeric)

StringGadget(#gesamt, 70,  120, 90, 20, "", #PB_String_Numeric)

TextGadget(4, 10,  40, 250, 20, "Zahl 1:")

TextGadget(5, 10,  80, 250, 20, "Zahl 2:")
TextGadget(6, 10,  120, 250, 20, "Gesamt:")

  
  ButtonGadget(8, 190, 60, 200, 20, "BERECHNE")
    
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_Gadget
      
      Select EventGadget()
        Case 8
  
     
  zahl1.l = Val(GetGadgetText(#zahl1)) 
      zahl2.l = Val(GetGadgetText(#zahl2))
      gesamt.l = zahl1 + zahl2 
      SetGadgetText(#gesamt, Str(gesamt)) 
   
        
               
     EndSelect

    EndIf
    
  Until EventID = #PB_Event_CloseWindow
EndIf

End
Code-Tags hinzugefügt (dafür benutzt man den kleinen Knopf im Browser auf dem "Code" steht) - nächstes Mal bitte selber machen - Kaeru fecit

Verfasst: 11.07.2009 14:37
von - chris -
+, -, *, /

lassen sich doch direkt benutzen:

Code: Alles auswählen

zahl1.l = 12
zahl2.l = 3

gesamt.l = zahl1 + zahl2
Debug gesamt

gesamt.l = zahl1 - zahl2
Debug gesamt

gesamt.l = zahl1 * zahl2
Debug gesamt

gesamt.l = zahl1 / zahl2
Debug gesamt

Verfasst: 11.07.2009 14:42
von Holgersson
danke chris,

das sieht ja einfach aus! also nix mit umwandeln!
Aber so bekomme ich den wert aus meinem StringGadget doch nicht in die variable übergeben oder?

so wird doch immer mit 12 und 3 gerechnet!?!

oder vielleicht zahl1.l = gedgadgettext?

ich versuchs einfach mal

DANKE!!!

Verfasst: 11.07.2009 14:47
von Vermilion
Hinweis: Du benutzt den Variablentyp Long, eine 32 Bit Ganzzahl. Seit PureBasic 4.20 (ich weiß es nicht genau) würde mit 64 Bit Unterstützung auch der Typ Integer eingeführt, der nun als Standardvariablentyp empfohlen wird. Dieser schaltet in PureBasic x64 automatisch auf 64 Bit Ganzzahl um.

Durch die Benutzung von Long kann es zu Kompatibilitätsproblemen kommen.

Außerdem, wenn du Integer benutzt, musst du keine Typendeklaration hintendran schreiben, da es der Standardvariablentyp ist. :) Bei Long Variablen und Variablen allen anderen Typen musst du ohnehin nur bei der Deklaration den Typ angeben.

Verfasst: 11.07.2009 14:51
von Holgersson
Hi Vermilion

danke euch beiden!

ich habe das ganze nunmal dementsprechend geändert, allerdings
kommt jetzt standardmäßig irgendwie 1 heraus.

na gut nach 2-3 tagen PB bin ich ja schon froh das ich überhaupt 2 zahlen wenn auch umständlich miteinader zu addieren.

aber so lernt man nur

hier noch mal der code der so überhaupt nicht rechnet^^




code PB-vers. 4.31

Code: Alles auswählen

#WindowWidth  = 420
#WindowHeight = 170

Enumeration 
  #zahl1
  #zahl2
  #gesamt
EndEnumeration

zahl1 = #zahl1
zahl2 = #zahl2


;gesamt.l = zahl1 + zahl2
;Debug gesamt

;gesamt.l = zahl1 - zahl2
;Debug gesamt

;gesamt.l = zahl1 * zahl2
;Debug gesamt

;gesamt.l = zahl1 / zahl2
;Debug gesamt



If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "TEST-RECHNENPROGRAMM", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)

StringGadget(#zahl1, 70,  40, 90, 20, "", #PB_String_Numeric)
StringGadget(#zahl2, 70,  80, 90, 20, "", #PB_String_Numeric)

StringGadget(#gesamt, 70,  120, 90, 20, "", #PB_String_Numeric)

TextGadget(4, 10,  40, 250, 20, "Zahl 1:")

TextGadget(5, 10,  80, 250, 20, "Zahl 2:")
TextGadget(6, 10,  120, 250, 20, "Gesamt:")

  
  ButtonGadget(8, 190, 60, 200, 20, "BERECHNE")
    
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_Gadget
      
      Select EventGadget()
        Case 8
  
     
  ;zahl1.l = Val(GetGadgetText(#zahl1)) 
      ;zahl2.l = Val(GetGadgetText(#zahl2))
      ;gesamt.l = zahl1 + zahl2 
      gesamt.l = zahl1 + zahl2
      SetGadgetText(#gesamt, Str(gesamt)) 
      
      
      
   
        
               
     EndSelect

    EndIf
    
  Until EventID = #PB_Event_CloseWindow
EndIf

End
Code-Tags hinzugefügt - nächstes Mal bitte selber machen - Kaeru fecit

Verfasst: 11.07.2009 14:53
von mk-soft
Bei VB werden Strings und Zahlen automatisch angepasst. Bei Purebasic nicht.

Code: Alles auswählen

Global x1.f, x2.f, y1.f
Global in1.s, in2.s, out.s

in1 = InputRequester("Eingabe", "x1=", "")
in2 = InputRequester("Eingabe", "x2=", "")

x1 = ValF(in1)
x2 = ValF(in2)

y1 = x1 *x2

out = StrF(y1,2)

MessageRequester("Ergebnis", "y1 = x1 * x2 : " + out)
Willkommen in Forum

Verfasst: 11.07.2009 14:57
von Holgersson
danke mk-soft

auch ein grosses dank an alle bin echt beeindruck innerhalb von sekunden hier eine antwort zu bekommen. echt super board!

ich glaube damit kann ich was anfangen!, jetzt muss ich nur noch schauen das ich das so umgesetzt bekomme das auch mein wert aus dem StringGadget in meine variable übergeben wird.

ich versuchs einfach mal


Vielen, vielen Dank an alle!

Verfasst: 11.07.2009 15:07
von Pelagio
Hallo Leute, Ihr seid ja schneller als ich schreiben kann.
Wenn ich es richtig verstehe soll auch die Möglichkeit gegeben werden zu entscheiden und zu berechnen +, -, *, /. Ich habe diesbezüglich Dein Beispiel etwas modifiziert so das Du eine Vorstellung hast wie es geht und mit den Informationen auch der anderen den Code noch effektiver schreiben kannst.als bei deinem beispiel.

Code: Alles auswählen

#WindowWidth = 420 
#WindowHeight = 170 

Enumeration 
   #zahl1 
   #zahl2
   #art
   #gesamt 
EndEnumeration 

If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "TEST-RECHNENPROGRAMM", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) 

   StringGadget(#zahl1, 70, 10, 90, 20, "", #PB_String_Numeric) 
   StringGadget(#zahl2, 70, 50, 90, 20, "", #PB_String_Numeric) 

   StringGadget(#gesamt, 70, 120, 90, 20, "", #PB_String_Numeric) 

   TextGadget  (4, 10, 010, 250, 20, "Zahl 1:") 
   TextGadget  (5, 10, 050, 250, 20, "Zahl 2:") 
   
   ComboBoxGadget(#art, 90, 80, 40, 20)
   AddGadgetItem (#art, 0, "+")
   AddGadgetItem (#art, 1, "-")
   AddGadgetItem (#art, 2, "*")
   AddGadgetItem (#art, 3, "/")
   SetGadgetState(#art, 0)
   SetGadgetFont (#art, LoadFont(1, "Arial", 16))
   
   TextGadget    (7, 10, 120, 250, 20, "Gesamt:") 

   ButtonGadget(8, 190, 60, 200, 20, "BERECHNE") 

   Repeat 
      EventID = WaitWindowEvent() 

      If EventID = #PB_Event_Gadget 
         Select EventGadget() 
            Case 8 
               zahl1.l = Val(GetGadgetText(#zahl1)) 
               zahl2.l = Val(GetGadgetText(#zahl2)) 
               Select GetGadgetState(#art)
                  Case 0: gesamt.l = zahl1 + zahl2 
                  Case 1: gesamt.l = zahl1 - zahl2 
                  Case 2: gesamt.l = zahl1 * zahl2 
                  Case 3: gesamt.l = zahl1 / zahl2 
               EndSelect
               SetGadgetText(#gesamt, Str(gesamt)) 
         EndSelect 
      EndIf 
   Until EventID = #PB_Event_CloseWindow 
EndIf 

End

Verfasst: 11.07.2009 15:08
von - chris -
Das erster Source-Code wahr doch schon richtig.

gesamt.l = zahl1 + zahl2

hier muß nur das + Zeichen durch -, * oder / ersetzt werden.

Wenn das Ergebnis mit Kommastellen sein soll muß der type .l in
.f geändert werden und das Val in ValF.

Verfasst: 11.07.2009 15:10
von mk-soft
Habe mir dein code mal angeschaut und überarbeitet.

Code: Alles auswählen

#WindowWidth = 420
#WindowHeight = 170

Enumeration
  #zahl1
  #zahl2
  #gesamt
  #text_1
  #text_2
  #text_gesamt
  #button_berechne
EndEnumeration

Global zahl1.l
Global zahl2.l
Global gesamt.l

If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "TEST-RECHNENPROGRAMM", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)

  StringGadget(#zahl1, 70, 40, 90, 20, "", #PB_String_Numeric)
  StringGadget(#zahl2, 70, 80, 90, 20, "", #PB_String_Numeric)
  
  StringGadget(#gesamt, 70, 120, 90, 20, "", #PB_String_Numeric)
  
  TextGadget(#text_1, 10, 40, 250, 20, "Zahl 1:")
  
  TextGadget(#text_2, 10, 80, 250, 20, "Zahl 2:")
  TextGadget(#text_gesamt, 10, 120, 250, 20, "Gesamt:")
  
  
  ButtonGadget(#button_berechne, 190, 60, 200, 20, "BERECHNE")
  
  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Gadget
    
      Select EventGadget()
        Case #button_berechne
          If EventType() = #PB_EventType_LeftClick
            zahl1 = Val(GetGadgetText(#zahl1))
            zahl2 = Val(GetGadgetText(#zahl2))
            ;gesamt.l = zahl1 + zahl2
            gesamt = zahl1 + zahl2
            SetGadgetText(#gesamt, Str(gesamt))
          EndIf
      EndSelect
    
    EndIf
    
  Until EventID = #PB_Event_CloseWindow
  EndIf
  
End
War nur ein keiner fehler drin. Get... war auskommentiert

Bitte Codetags im Forum verwenden.