Umgang mit Variablen aus TextGadget's?

Anfängerfragen zum Programmieren mit PureBasic.
falke
Beiträge: 7
Registriert: 01.07.2010 01:18

Umgang mit Variablen aus TextGadget's?

Beitrag von falke »

Hallo erstmal,
ich bin neu hier, und fange gerade erst an mit PB.
Nach langem suchen habe ich mich für diese ,,Sprache“ entschieden. Früher habe ich mich rudimentär etwas mit Basic auseinandergesetzt an meinem alten ,,CPC“ (Locomotive BASIC)

Lange Zeit hatte ich 'Bammel' vor einer Objekt Orientierten Sprache..... Aber irgendwann muss man es mal angehen, wenn man doch immer wieder Interesse daran zeigt.

Also habe ich mal versucht ein Programm zu schreiben. Einen ,,Taschenrechner“ ich dachte ,,das kann ja nicht so schwer sein“

Aber denkste.....

Hier mein Problem:

Code: Alles auswählen

Define zahlspeicher$
   Define zahlspeicherB$   


If OpenWindow(0, 532, 239, 341, 501, "Taschen Rechner v2.0 (c)Sven Mayer",#PB_Window_ScreenCentered|  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
If LoadFont(12,"Georgia",10,#PB_Font_Bold)
           
        EndIf 

 ButtonGadget(0,20,110,50,40,"0")
  ButtonGadget(1,80,110,50,40,"1")
  ButtonGadget(2,140,110,50,40,"2")
  ButtonGadget(3,200,110,50,40,"3")
  ButtonGadget(4,20,160,50,40,"4")
   ButtonGadget(5,80,160,50,40,"5")
   ButtonGadget(6,140,160,50,40,"6")
   ButtonGadget(7,200,160,50,40,"7")
   ButtonGadget(8,20,210,50,40,"8")
   ButtonGadget(9,80,210,50,40,"9")
   ButtonGadget(10,20,270,80,40,"+")
   ButtonGadget(11,120,270,80,40,"-")
   ButtonGadget(13,210,270,80,40,"=")
   ButtonGadget(14,20,320,80,40,"C")
   TextGadget(12,10,60,180,40,"")

  
EndIf

Repeat
    EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
End
 
 EndSelect
 
    If EventID = #PB_Event_Gadget
      
      Select EventGadget()
       Case 0
      
      
       SetGadgetText(12,GetGadgetText(12)+"0")
      
       
       Case 1
       SetGadgetText(12,GetGadgetText(12)+"1")
       Case 2
       SetGadgetText(12,GetGadgetText(12)+"2")
       Case 3
       SetGadgetText(12,GetGadgetText(12)+"3")
       Case 4
       SetGadgetText(12,GetGadgetText(12)+"4")
       Case 5
       SetGadgetText(12,GetGadgetText(12)+"5")
       Case 6
       SetGadgetText(12,GetGadgetText(12)+"6")
       Case 7
       SetGadgetText(12,GetGadgetText(12)+"7")
       Case 8
       SetGadgetText(12,GetGadgetText(12)+"8")
       Case 9
       SetGadgetText(12,GetGadgetText(12)+"9")
       Case 10
        
         
       rechenzeichen$="+"
       zahlspeicher$=GetGadgetText(12)
       SetGadgetText(12,"+")
    
       
       Case 11
       rechenzeichen$="-"
       zahlspeicher$=GetGadgetText(12)
       SetGadgetText(12,"-")
       
       
       Case 13
     
       
       zahlspeicherB$=GetGadgetText(12) 
       
       
      
    
  If rechenzeichen$="+" 
             ergebnis.d=ValF(zahlspeicher$)+ValF(zahlspeicherB$)
            SetGadgetText(12,StrF(ergebnis.d))
          
          ElseIf rechenzeichen$="-"; PROBLEM HIER!!! rechnet nicht MINUS
               ergebnis.d=ValF(zahlspeicher$)-ValF(zahlspeicherB$)
            
            
            SetGadgetText(12,StrF(ergebnis.d))
           
            EndIf
            
            
         
        Case 14
        SetGadgetText(12,"")
            
        
       EndSelect
    
       
       EndIf
  
 ForEver
 
  
 
 
Ich verstehe nicht warum PB die Variable in der (fett markierten) IF ELSE Bedingung bei Minus korrekt abzieht. Der Rechenr rechnet immer PLUS...
vielleicht kann mir jemand sagen warum PB dort nicht MINUS rechnet?
Das Prog holt sich doch mit der Variable(String),,zahlspeicherB$“ den Wert aus dem TextLabel, und rechnet korrekt mit der Zahlen variable ,,zahlspeicher$“ gegen bei Else IF „-“.....

ich sehe den Fehler nicht..... :lamer:
Zuletzt geändert von falke am 01.07.2010 15:42, insgesamt 1-mal geändert.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: kleine Frage!?

Beitrag von CSHW89 »

sagen wir mal du rechnest "10-4"
dann hast du im gadget 12 nachdem du die 4 gedrückt hast den text "-4" stehen und nicht "4".
also rechnest du "10 - (-4)"

lg kevin

ps: herzlich willkommen im forum
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Re: kleine Frage!?

Beitrag von ralle »

Hab das gerade mal getestet, CSHW89 hat vollkommen recht. Du solltest entweder die zweite Zahl nicht mit dem "-" speichern, oder einfach immer die Operation "+" ausführen. Dann erhältst du eine Subtraktion.

mfG
Ralle

PS: PB ist KEINE OBJEKTORIENTIERTE Sprache. Sie ist prozedural, mit der Möglichkeit "Objekte" zu erstellen und zu verwenden. In der Hilfe wird dieser Begriff leider sehr irreführend verwendet.
falke
Beiträge: 7
Registriert: 01.07.2010 01:18

Re: kleine Frage!?

Beitrag von falke »

Hallo!

AHHH Danke für den Hinweis!!!

Habe das Problem gelöst!

Mit einem einfachen Trick:

Code: Alles auswählen

  Case 10
        
         
       rechenzeichen$="+"
       zahlspeicher$=GetGadgetText(12)
       SetGadgetText(12,"+")
      Delay(500)
       SetGadgetText(12,"")
        
       
       Case 11
       rechenzeichen$="-"
       zahlspeicher$=GetGadgetText(12)
       SetGadgetText(12,"-")
       Delay(500)
       SetGadgetText(12,"")
       
       
ein einfaches Delay, und dann das Textlabel löschen!!!
Ist vielleicht nicht die Eleganteste Lösung aber funktioniert....

Danke an alle! :praise: Und für den Hinweis im besonderen darauf wäre ich nicht gekommen....

jetzt kann ich Schlafen gehen..... :D
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: kleine Frage!?

Beitrag von mk-soft »

Nie ein Delay in einer Eventschleife verwenden, sonst kommt irgendwann von Windows die Meldung "Programm regiert nicht mehr"
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: kleine Frage!?

Beitrag von ts-soft »

@falke
Wäre nett, wenn Du den Titel nochmal anpassen würdest. Etwas Aussagekräftigeres für die Suchfunktion des Boards.
Einfach den edit button im ersten Beitrag drücken und ändern.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
falke
Beiträge: 7
Registriert: 01.07.2010 01:18

Re: Umgang mit Variablen aus TextGadget's?

Beitrag von falke »

@mk-soft

Danke für den Hinweis, aber ich wollte das man das ,,Plus“ Zeichen auch zu Gesicht bekommt.

@ts-soft

Jo, vielleicht denn ,,Umgang mit Variablen aus TextGadget's?“.....

Werde es in der Form abändern.
Antworten