Forum | | | | Gary12345 | Hallo, KompilierenMarkierenSeparierenWindow 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! |
| | | | |
| | Dieter Zornow | In einer Schleife sollte man keine Variable declarieren, deshalb kommt das.
Aber es sind noch mehr Fehler drin, Beim Start habe ich ein leeres Fenster, erst wenn ich klicke erscheinen die Buttons aber eine Reihe fehlt ganz. Ich habe mir den Code nicht weiter betrachtet nur nach der Variablen gesucht, da ich den Verdacht hatte, dass die in der Schleife declariert wird. |
| | | XProfan X2Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 26.01.2013 ▲ |
| |
| | Gary12345 | Super Problem1 und Problem2 sind gelöst.
Also neues Problem
Problem4:
Wenn man das startet, is erstmal ein leeres Fenster da.
Werde da mal rumschauen, was da los ist. |
| | | | |
| | Gary12345 | Ich mach hier mal eine Problemsammlung:
Problem1: Wenn man 1+1 rechnet kommt immer nur noch 1 raus, weil ich nur alle Werte addiert habe, aber nicht berücksichtigt habe, das man auch mehrmals gleiche Werte eingeben kann. z.B. 1+1+1=1 2+2+2=2 3+3+3=3 Problem2: Wenn man zwei verschiedene Zahlen miteinander addiert und das Ergebnis mit der gleichen Zahl addiert, bleibt das Ergebnis gleich. z.B. 2+7=9+7=9 3+6=9+6=9 Mit den Button Test100 geht das aber dann wieder. Problem3: Man kann keine 11 eingeben. Denn es schreibt die Zahlen immer untereinander und nicht nebeneinander.
Ich vermute, dass Problem1 und Problem2 aus mathematischen Gründen nicht stimmen. Daher versuch ich das selber zu lösen. Ich teile euch mit, wenn ich es nicht schaffe. Ich geb euch den aktuellen Code. Wenn doch was am Code falsch ist, teilt ihr es doch bitte mir mit KompilierenMarkierenSeparierenWindow 0,0-400,400
declare wert%, wert2%, wert3%, wert4%, wert5%, wert6%, wert7%, wert8%, wert9%, wert10%
declare Ergebnis$
declare button1&, button2&, button3&, button4&, button5&, button6&, button7&, button8&, button9&, button10&, button11&, button12&, button13&, button14&
declare button15&, buttonclear&
Proc Hauptprogramm
Button1& = CREATE("Button",%HWND,"1", 50, 50, 50, 50)
Button2& = CREATE("Button",%HWND,"2",50, 100, 50, 50)
Button3& = CREATE("Button",%HWND,"3",50,150,50,50)
Button4& = CREATE("Button",%HWND,"4",50,200,50,50)
Button5& = CREATE("Button",%HWND,"5",50,250,50,50)
Button6& = CREATE("Button",%HWND,"6",100,50,50,50)
Button7& = CREATE("Button",%HWND,"7",100,100,50,50)
Button8& = CREATE("Button",%HWND,"8",100,150,50,50)
Button9& = CREATE("Button",%HWND,"9",100,200,50,50)
Button10& = CREATE("Button",%HWND,"0",100,250,50,50)
Button11& = CREATE("Button",%HWND,"+",200,50,50,50)
Button12& = CREATE("Button",%HWND,"-",200,100,50,50)
Button13& = CREATE("Button",%HWND,":",200,150,50,50)
Button14& = CREATE("Button",%HWND,"*",200,200,50,50)
Button15& = CREATE("Button",%HWND,"=>",200,250,50,50)
ButtonClear& = CREATE("Button", %HWND, "TEST100", 250,100,100,100)
EndProc
Hauptprogramm
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&)
Ergebnis$ = str$(wert%+wert2%+wert3%+wert4%+wert5%+wert6%+wert7%+wert8%+wert9%+wert10%)
print Ergebnis$
EndIf
If clicked(ButtonClear&)
cls
EndIf
EndWhile
|
| | | | |
| | Gary12345 | Komme einfach nicht drauf.
Ich müsste die Variable wert% vervielfachen, das auch andere Zahlen ausser nur 1,2,3,4,5,6,7,8,9 rauskommen.
Man müsste abfragen, ob die Buttons mehrfach gedrückt worden sind, oder nicht?
Kann mir jemand nur TIPPS geben, bitte keine Lösungen. (Also zu Problem1)
Danke |
| | | | |
| | | Es gibt viele Ansätze einen einfachen Taschenrechner umzusetzen. Da Du Dich in Bezug auf die Ressourcen Deines Computers quasi im Schlaraffenland befindest, kannst Du es Dir sehr leicht machen.
Mach doch erstmal, dass wenn man einen Button klickt, dass das entsprechende Zeichen zu einem String hinzugefügt wird.
Quasi druck auf 5: formel$=formel$+"5" Quasi druck auf +: formel$=formel$+"+" Quasi druck auf 9: formel$=formel$+"9"
Beim Istgleichzeichen muss dann nur noch formel$ ausgerechnet werden, dafür gibt es die Funktion eval( ... ( [...] ).
Ach ja, eval gibts ja noch nicht -
dann einfach: [...] |
| | | | |
| | Gary12345 | Ich bin ehrlich:
Von dem Code da kapier ich reingarnichts und will ich auch nicht anwenden. Gibt es eine andere Möglichkeit das zu lösen. Über input wärs ja viel leichter. Da müsste man das input nur in einen string packen und die dann adieren. Das schaut aber nicht so schön aus. |
| | | | |
| | | Wie geschrieben gibt es ja viele Lösungswege. Hast Du eine andere Idee? |
| | | | |
| | Gary12345 | Ich kenn zwei Lösungswege:
1. Per Editierfeld zu machen (Input,editfeld,etc.) 2. Oder per Buttons...
Welche gibt es noch? |
| | | | |
| | | Deinen Lösungswegen kann ich nicht so richtig entnehmen was genau sie alles lösen sollen.
Das eine ist die Anzeige/ Oberfläche quasi UI - das andere ist das Ausrechnen.
Mein Tip war ja:
Mach doch erstmal, dass wenn man einen Button klickt, dass das entsprechende Zeichen zu einem String hinzugefügt wird.
Quasi druck auf 5: formel$=formel$+"5" Quasi druck auf +: formel$=formel$+"+" Quasi druck auf 9: formel$=formel$+"9"
Zudem lassen sich:
1. Per Editierfeld zu machen (Input,editfeld,etc.) 2. Oder per Buttons...
auch kombinieren sodass man mit den Buttons "nur" ein Edit befüllt man aber das Edit auch direkt editieren kann. |
| | | | |
| | Gary12345 | Vll kann ich Dir es jetzt etwas erläutern:
Wenn Du meinem Code in XPROFAN eingibst und ausführst, merkst Du , dass er alle Zahlen untereinander schreibt und nicht nebeneinander. Das andere Problem war, dass wenn ich 1+1=1 ergibt, da der Code nicht zwei gleiche Werte addieren kann. Das letzte Problem ist, dass wen ich 6+2=8+2=8 ergibt, und da habe ich keinen Plan warum.
Zuerst würde ich das erste Problem lösen.
Mach doch erstmal, dass wenn man einen Button klickt, dass das entsprechende Zeichen zu einem String hinzugefügt wird.
Quasi druck auf 5: formel$=formel$+"5" Quasi druck auf +: formel$=formel$+"+" Quasi druck auf 9: formel$=formel$+"9"
ich weiß nicht, was ich unter formel$ verstehen soll. |
| | | | |
| | Gary12345 |
Zudem lassen sich:
1. Per Editierfeld zu machen (Input,editfeld,etc.) 2. Oder per Buttons...
auch kombinieren sodass man mit den Buttons "nur" ein Edit befüllt man aber das Edit auch direkt editieren kann.
Das wäre auch eine sehr optionale Lösung. Aber antworte doch bitte auf den oberen Post |
| | | | |
|
AntwortenThemenoptionen | 24.935 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |