Deutsch
Forum

Beim Taschenrechner programmieren! Kapier da was nicht. Bzw. Kann Fehler nicht verstehen

 
- Seite 1 -



Gary12345
Hallo,
KompilierenMarkierenSeparieren
Window 0,0-400,400

Proc Hauptprogramm

    declare wert%, wert2%, wert3%, wert4%, wert5%, wert6%, wert7%, wert8%, wert9%, wert10%
    var Button1& = CREATE("Button",%HWND,"1", 50, 50, 50, 50)
    var Button2& = CREATE("Button",%HWND,"2",50, 100, 50, 50)
    var Button3& = CREATE("Button",%HWND,"3",50,150,50,50)
    var Button4& = CREATE("Button",%HWND,"4",50,200,50,50)
    var Button5& = CREATE("Button",%HWND,"5",50,250,50,50)
    var Button6& = CREATE("Button",%HWND,"6",100,50,50,50)
    var Button7& = CREATE("Button",%HWND,"7",100,100,50,50)
    var Button8& = CREATE("Button",%HWND,"8",100,150,50,50)
    var Button9& = CREATE("Button",%HWND,"9",100,200,50,50)
    var Button10& = CREATE("Button",%HWND,"0",100,250,50,50)
    var Button11& = CREATE("Button",%HWND,"+",200,50,50,50)
    var Button12& = CREATE("Button",%HWND,"-",200,100,50,50)
    var Button13& = CREATE("Button",%HWND,":",200,150,50,50)
    var Button14& = CREATE("Button",%HWND,"*",200,200,50,50)
    var Button15& = CREATE("Button",%HWND,"=>",200,250,50,50)
    var ButtonClear& = CREATE("Button", %HWND, "TEST100", 250,100,100,100)

    While 1

        WaitInput

        If clicked(Button1&)

            wert% = 1
            Print wert%

        EndIf

        If clicked(Button2&)

            wert2% = 2
            print wert2%

        EndIf

        If clicked(Button3&)

            wert3% = 3
            print wert3%

        EndIf

        If clicked(Button4&)

            wert4% = 4
            print wert4%

        EndIf

        If clicked(Button5&)

            wert5% = 5
            print wert5%

        EndIf

        If clicked(Button6&)

            wert6% = 6
            print wert6%

        EndIf

        If clicked(Button7&)

            wert7% = 7
            print wert7%

        EndIf

        If clicked(Button8&)

            wert8% = 8
            print wert8%

        EndIf

        If clicked(Button9&)

            wert9% = 9
            print wert9%

        EndIf

        If clicked(Button10&)

            wert10% = 0
            print wert10%

        EndIf

        If clicked(Button11&)

            var Ergebnis$[wert1%,wert2%,wert3%,wert4%,wert5%,wert6%,wert7%,wert8%,wert9%,wert10%] = wert%+wert2%+wert3%+wert4%+wert5%+wert6%+wert7%+wert8%+wert9%+wert10%
            print Ergebnis$

        EndIf

        If clicked(ButtonClear&)

            cls

        EndIf

    EndWhile

EndProc

While 1

    WaitInput
    Hauptprogramm

EndWhile


Wie ich vorgegangen bin:

1. Habe überlegt, ob ich Buttons verwenden soll oder nur ein Editierfeld. Ich habe mich für die schwierigere Variante entschieden, nämlich die Buttons.
2. Das Hauptprogramm in eine Prozedur gestellt. Externe Funktionen werden in einem Extra-Proc behandelt.
3. Alle Buttons einen Wert zuweisen (natürlich integer) => wert% - wert10%
4. Falls Button "+" gedrückt wurde, alle Werte addieren. Zu guter letzt sie mit print darstellen lassen (Das Ergebnis natürlich)

Mein Problem:

1. Es addiert alles richtig, nur wenn ich das zweite mal addiert habe (also das zweite mal rechne ohne ClearUp) kommt eine Fehlermeldung, dass ich die Variable Ergebnis doppelt deklariert habe. Kann diesen Fehler nicht nachvollziehen.
2. Wenn ich nur einmal zwei Werte addiere und dann zu guter Letzt auf den Button100 klicke, kommt beim zweiten Rechnen auch eine Fehlermeldung. Das ist wiederum die gleiche wie in Problem1 beschrieben.
3. Ich kann nur Werte 0-9 darstellen. Keine Werte über 9. Warum? Warum hängt es immer eine Zahl drunter statt neben der Zahl? Kann ich auch nicht nachvollziehen.

Wie ihr mir helfen könntet

Ich will keinen Lösungscode. Ich will nur Hinweise auf die Ursache dieses Fehlers. Was ich genau falsch gemacht habe und noch weitere andere Sachen. Dazu würde ich das Problem nicht alles auf einmal machen, sondern alles Schritt für Schritt. Ich war es früher gewohnt einfach nur Codes zu bekommen, aber diesmal will ich wirklich lernen. Wenn ich was nicht verstehe, dann frag ich eben nach. Aber Hinweise statt der ganzen Lösung ist oft sinnvoller als man denkt.

Daher vielen Dank schon in vorraus!
 
XProfan X2
MfG
Gary12345
26.01.2013  
 



 
- Seite 3 -



Gary12345
Es wird ja immer geiler in Deinem Forum
Nochmals vielen Dank.

Bin beim Taschenrechnercode (neuen Code) auf ein Problem gestoßen, werde es hoffentlich alleine schaffen, das zu beseitigen
 
XProfan X2
MfG
Gary12345
27.01.2013  
 



Weiterführendes zum Thema findest Du auch hier [...]  und hier [...]  . ^^
 
27.01.2013  
 




Gary12345
Include in Action:
KompilierenMarkierenSeparieren
 $I MatheLeicht.inc
cls
declare Summe!
var edit1! = CREATE("Edit",%HWND,"",0,0,100,100)
var edit2! = CREATE("Edit",%HWND,"",100,0,100,100)
var button& = CREATE("Button",%HWND,"Rechnen",100,100,100,100)

While 1

    WaitInput

    If clicked(button&)

        Summe! = Summe(edit1!,edit2!)
        print Summe!

    EndIf

EndWhile


Wann man den Button Rechnen drückt, kommt ein anderer Wert raus, als den ich eigentlich haben will. Ich muss den irgendwie umwandeln, aber wie?
 
MfG
Gary12345
27.01.2013  
 



Ein Edit ist ein Control und create("edit liefert ein Control-Handle -
dies ist vom Typ long -

also:
KompilierenMarkierenSeparieren
var edit1& = CREATE("Edit"

Und statt:
KompilierenMarkierenSeparieren
Summe! = Summe(edit1!,edit2!)

funktioniert:
KompilierenMarkierenSeparieren
Summe! = Summe(val(getText(edit1&)),val(getText(edit2&)))
 
27.01.2013  
 




Gary12345
Und Du hast bei getText was falsch

gettext ist falsch, richtig wäre gettext$

Vielen Dank!
 
XProfan X2
MfG
Gary12345
27.01.2013  
 



Stimmt, das hat man davon wenn mans ungetestet direkt in den Beitragseditor
pinselt.

Zu meiner Ehrenrettung hätte getText ohne Dollarzeichen im nativen Profan
(nProcs) absolut genügt.
 
27.01.2013  
 




Gary12345
Darf ich wissen, was NProcs sind? Ist das schon wichtig für mich? Oder erst später?
 
XProfan X2
MfG
Gary12345
27.01.2013  
 



Die können später mal durchaus wichtig sein für Dich.

Damit kannst Du native Funktionen programmieren, die haben viele Vorteile z.B.
sind sie um ein Vielfaches schneller und thread- und APC ( [...]  ) -sicher und Du
kannst auch direkt in Assembler programmieren und Funktionen programmieren
die z.B. schneller sind als wären sie mit C programmiert.

Du kannst damit also Dein XProfan "pimpen" in dem Du den Präkompilierer
XPSE vor den eigentlichen Kompilierer schaltest: [...] 

Beispiel: [...] 

Auch schön: [...]  , [...] 
 
27.01.2013  
 




Gary12345
OK Ich versag schon beim Verständnis der Begriffe. Aber kann sicher später für mich wichtig sein. Jetzt progge ich erstmal am Taschenrechner weiter

PS: BKA Remover kann etwas dauern
 
XProfan X2
MfG
Gary12345
27.01.2013  
 



 
- Seite 4 -



Gary12345

KompilierenMarkierenSeparieren
 $I MatheLeicht.inc
cls rgb (187,234,102)
declare Summe!,Minus!,Teilen!,Multiplizieren!,Wurzel!
var edit1& = CREATE("Edit",%HWND,"Zahl eingeben",0,0,100,30)
var edit2& = CREATE("Edit",%HWND,"Zahl eingeben ",150,0,100,30)
var button& = CREATE("Button",%HWND,"+ ",0,100,50,100)
var button2& = CREATE("Button",%HWND,"-",50,100,50,100)
var button3& = CREATE("Button",%HWND,":",100,100,50,100)
var button4& = CREATE("Button",%HWND,"*",150,100,50,100)
var button5& = CREATE("Button",%HWND,"Wurzel",200,100,50,100)

While 1

    WaitInput

    If clicked(button&)

        Summe! = Summe(val(getText$(edit1&)),val(getText$(edit2&)))
        print Summe!

    EndIf

    If clicked(button2&)

        Minus! = Minus(val(getText$(edit1&)),val(getText$(edit2&)))
        print Minus!

    EndIf

    If clicked(button3&)

        Teilen! = Teilen(val(getText$(edit1&)),val(getText$(edit2&)))
        print Teilen!

    EndIf

    If clicked(button4&)

        Multiplizieren! = Multiplizieren(val(getText$(edit1&)),val(getText$(edit2&)))
        print Multiplizieren!

    EndIf

    If clicked(button5&)

        Wurzel! = Wurzel(val(getText$(edit1&)))
        print Wurzel!

    EndIf

EndWhile


Fertig!

Wollte nur dieses Experiment lösen und habe es mit Hilfe einer eigenen INCLUDE erfolgreich gelöst. Das Programm wird nicht veröffentlicht, da es eher eine Übung ist als ein Projekt. Grundprinzip verstanden. Will den jetzt noch nicht weiter ausbauen.

Vielen Dank an alle, die mir geholfen haben!

(Fläche werde ich mit diesem Taschenrechner nicht ausrechnen.)
 
MfG
Gary12345
27.01.2013  
 




Jörg
Sellmeyer
Fläche hast du ja schon:
KompilierenMarkierenSeparieren
Multiplizieren! = Multiplizieren(val(getText$(edit1&)),val(getText$(edit2&)))
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.01.2013  
 




Gary12345
Jo weiß ich. Werde dann an meiner Include weiterbasteln und wenn möglich, doch noch am Taschenrechner.
 
XProfan X2
MfG
Gary12345
28.01.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

24.128 Betrachtungen

Unbenanntvor 0 min.
ecki29.12.2023
MrZebulon05.08.2018
rawerra30.12.2016
Peter Max Müller30.10.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie