Rechner

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

/:-> nu macht man alles so wie alle es wollen und keiner hat ne lösung *dreck*
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

The_Dark_Zim-.- hat geschrieben:/:-> nu macht man alles so wie alle es wollen und keiner hat ne lösung *dreck*
Schnuffi, dann musst Du auch explizit erwähnen, dass irgendwas noch nicht
so funktioniert, wie Du es Dir erhofft hast. Mit Deinen letzten zwei Postings
vermittelst Du uns den Eindruck, dass Du keine Probleme mehr hast.
(Kaeru Gaman hat ja auch noch einmal extra nachgefragt)

Also: Was funktioniert nicht?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

SRY <)
Die Komma eingabe funktioniert noch nicht !
Achja und wenn man auf der tastertur + und so drückt geht das nicht !

Hoffe ihr könnt mir helfen ;)
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Kleiner Tip:

Wenn du die Konstanten vergabe der ZahlenButton besser wählst, kannst bei der Abfrage der gedrückten zahl und deren Auswirkungen 90% Code sparen:
#ButtonZahl_0 - #ButtonZahl_9 habe ich neu eingebaut, damit diese GadgetIDs hintereinander liegen.
Damit kannst du alle 10 Abfragen deiner Zahlen zu einer zusammenfassen, indem du die Gedrückte Zahl mit:
GadgetID-#ButtonZahl_0
bekommst.
habe dein Code unten hingeschrieben und auch alle überflüssigen SetGadgetFont() rausgenommen:

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 
  #ButtonZahl_0
  #ButtonZahl_1
  #ButtonZahl_2
  #ButtonZahl_3
  #ButtonZahl_4
  #ButtonZahl_5
  #ButtonZahl_6
  #ButtonZahl_7
  #ButtonZahl_8
  #ButtonZahl_9
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)) 
      SetGadgetFont(-1, FontID2) 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      ButtonGadget(#Button_0, 20, 140, 60, 60, "CE") 
      ButtonGadget(#Button_1, 100, 140, 60, 60, "/") 
      ButtonGadget(#Button_2, 180, 140, 60, 60, "X") 
      ButtonGadget(#ButtonZahl_7, 20, 220, 60, 60, "7") 
      ButtonGadget(#ButtonZahl_8, 100, 220, 60, 60, "8") 
      ButtonGadget(#ButtonZahl_9, 180, 220, 60, 60, "9") 
      ButtonGadget(#ButtonZahl_4, 20, 300, 60, 60, "4") 
      ButtonGadget(#ButtonZahl_5, 100, 300, 60, 60, "5") 
      ButtonGadget(#ButtonZahl_6, 180, 300, 60, 60, "6") 
      ButtonGadget(#Button_9, 260, 140, 60, 60, "-") 
      ButtonGadget(#Button_10, 260, 220, 60, 140, "+") 
      ButtonGadget(#Button_11, 260, 380, 60, 140, "OK") 
      ButtonGadget(#ButtonZahl_3, 180, 380, 60, 60, "3") 
      ButtonGadget(#ButtonZahl_2, 100, 380, 60, 60, "2") 
      ButtonGadget(#ButtonZahl_1, 20, 380, 60, 60, "1") 
      ButtonGadget(#ButtonZahl_0, 20, 460, 140, 60, "0") 
      ButtonGadget(#Button_16, 180, 460, 60, 60, ",") 
      ButtonGadget(#Button_17, 390, 460, 110, 60, "EXIT") 
    EndIf 
   EndIf 
  EndIf 

Repeat 
  
  Event = WaitWindowEvent() 
  
  WindowID = EventWindow() 
  
  GadgetID = EventGadget() 
  
  EventType = EventType() 
    
ExamineKeyboard() 

If KeyboardPushed (1) 
  End 
EndIf  

  If Event = #PB_Event_Gadget 
    If GadgetID = #String_0 

ElseIf GadgetID = #Button_0 ;CE 

      StringGadget(#String_0, 20, 40, 480, 30, "") 
 
;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID => #ButtonZahl_0 And GadgetID <= #ButtonZahl_9  ;0-9 
    
     If v=1 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      
      v=0 
    
     EndIf    
    
    x.f=ValF(GetGadgetText(#string_0)) 
    
      If x.f =0 
    
     x.f=GadgetID-#ButtonZahl_0 
    
     StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)) 
    
    Else
     
    StringGadget(#String_0, 20, 40, 480, 30, Str(x.f)+Str(GadgetID-#ButtonZahl_0)) 
    EndIf 
  
;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID = #Button_16 ;, 

   x.f=ValF(GetGadgetText(#string_0)) 
    
     StringGadget(#String_0, 20, 40, 480, 30, Str(x)+".") 
    
ElseIf GadgetID = #Button_17 

    End 
    
ElseIf GadgetID = #Button_1 ;/ 

v=0 

     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, "") 
 
ElseIf GadgetID = #Button_2 ;x 

v=0 

     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, "") 
      
ElseIf GadgetID = #Button_9 ;- 

v=0 
    
     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, "") 
    
ElseIf GadgetID = #Button_10 ;+ 

v=0 
    
     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, "") 
    
ElseIf GadgetID = #Button_11 ;ok 
    
    SetGadgetText(0, ReplaceString(GetGadgetText(0),",",".")) 
    g.f=ValF(GetGadgetText(#string_0)) 
  
 v=1  

;_________________________________________________________________________________________________________________________ 

   If c=1 
    
    e.f=f.f-g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If a=1 
    
    e.f=f.f/g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If b=1 
    
    e.f=f.f*g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
    
   If d=1 
    
    e.f=f.f+g.f 
    StringGadget(#String_0, 20, 40, 480, 30, StrF(e.f,2)) 
    
   EndIf 
;_________________________________________________________________________________________________________________________ 
EndIf 

If KeyboardPushed (#PB_Key_Decimal) 
 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, "") 
    
EndIf  

If KeyboardPushed (#PB_Key_Divide) 
 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, "") 
    
EndIf 

If KeyboardPushed (#PB_Key_Subtract) 

 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, "") 
 
EndIf 

If KeyboardPushed (#PB_Key_Add) 
 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, "") 
     
 EndIf 
EndIf 

Until Event = #PB_Event_CloseWindow 
End 
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

:o verdammt das ist ja voll klein geworden. :allright:
hm da muss ich ja noch viel lernen XD

Aber leider noch keine lösung für das Kommaproblem :'(

Trotzdem ein Dickes Dankeschön :mrgreen:
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

ach so: Ersetzte dal diese Zeilen :

Code: Alles auswählen

;_________________________________________________________________________________________________________________________ 

ElseIf GadgetID => #ButtonZahl_0 And GadgetID <= #ButtonZahl_9  ;0-9 
    
     If v=1 
      
      StringGadget(#String_0, 20, 40, 480, 30, "") 
      
      v=0 
    
     EndIf    
    
    
   StringGadget(#String_0, 20, 40, 480, 30, GetGadgetText(#string_0)+Str(GadgetID-#ButtonZahl_0)) 
  
;_________________________________________________________________________________________________________________________
Dein Problem war folgendes:
ValF() hat bei einem String: "123,"
das Komma hinten weggemacht und 123 drauß gemacht:
Das ganze umgehst du indem du (solange nicht gerechnet wird)
bei der eingabe der Zahl noch nicht in eine echte Zahl umwandelst sondern die ganze Zeit als String läßt,
damit sparst du wiederum Zeilen ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

:shock:
Nun bin ich ein glücklicher ZIM XD
THX da wäre ich nie drauf gekommen.
:allright:
Du hast es einfach drauf ;)

Kannst du mir evtl. auch nen Tipp geben wie ich das machen kann das er die + Tasten usw. auch annimmt.
Im mom verschwindet dann immer die eingabe und setzt sie auf 0.
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

The_Dark_Zim-.- hat geschrieben:THX da wäre ich nie drauf gekommen.
[räusper] wenn Du gewisse Hinweise meinerseits aufmerksam gelesen hättest...
Kiffi hat geschrieben:Benenne die Konstanten doch einfach #Button_Zahl_0 bis #Button_Zahl_9
für die Zahlenbuttons und dann #Button_Multiplizieren, Button_Dividieren,
etc. etc.
... hätten wir gemeinsam Schritt für Schritt in diese Richtung gehen können.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

da musst du aufpassen:

Ich würde die vorschlagen das du das StringGadget (oben) #PB_String_ReadOnly machen und dann mit
AddKeyboardShortcut() dir jede zahl und die Operatoren definieren.

Dann kannst du mit
If Event = #PB_Event_Menu
und MenuID() herausfinden welche Taste gedrückt wurde (wie bei den Buttons)

Der Grund dafür ist, wenn du diese Eingaben im Edit Feld oben machen würdest dann schreibt ja ja auch immer ein + oder - mit hinein.

Am cleversten wäre es wieder wenn du die KeyboardShortcut gleich mit den Button verbindest und nicht alles separat abfragst.

Pobiert halt mal ^^, sonst muss ich wieder ran :allright:

EDIT : ExamineKeyboard() usw. sind nicht für Fenster gedacht
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
The_Dark_Zim-.-
Beiträge: 372
Registriert: 18.03.2008 16:53

Beitrag von The_Dark_Zim-.- »

Ich frag zwar nur ungerne, aber könnte ich erfahren wie ich das einbauen soll ^^
Ich bekomms noch net hin ich versuch es aber weiter.

EDIT:
Ich hab mal versucht einfach das hier ein zu fügen aber das geht net :cry:

Code: Alles auswählen

...
 
  GadgetID = EventGadget()
 
  EventType = EventType()
  
  MenuID = EventMenu()
   
ExamineKeyboard()

If KeyboardPushed (1)
  End
EndIf 


        If Event = #PB_Event_Menu
           If MenuID = #PB_Shortcut_Return
             End
           EndIf

  If Event = #PB_Event_Gadget
    If GadgetID = #String_0

ElseIf GadgetID = #Button_0 ;CE

      StringGadget(#String_0, 20, 40, 480, 30, "", #PB_String_ReadOnly)
...
PB: 5.xx LTS x86/x64 | WIN: 10 Pro x64, Linux Mint x64
Antworten