RECHNEN in PB

Anfängerfragen zum Programmieren mit PureBasic.
Holgersson
Beiträge: 13
Registriert: 11.07.2009 14:14

RECHNEN in PB

Beitrag 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
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Beitrag 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
PB v5.72 x86/x64
Windows 10 Pro 64bit
Holgersson
Beiträge: 13
Registriert: 11.07.2009 14:14

Beitrag 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!!!
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag 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.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Holgersson
Beiträge: 13
Registriert: 11.07.2009 14:14

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Holgersson
Beiträge: 13
Registriert: 11.07.2009 14:14

Beitrag 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!
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Beitrag 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
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Beitrag 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.
PB v5.72 x86/x64
Windows 10 Pro 64bit
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten