Forum | | | | - Seite 1 - |
| 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! |
| | | | |
| | | | - Seite 2 - |
| | | formel$ ist einfach nur ein String declare formel$
Das Dein Code alle Zeichen untereinander schreibt ist ja programmiert, Print schließt mit \n ab -
Abhilfe ist hinter die Print-Parameter ein Semikolon oder Komma zu schreiben,
also print "10"; print "20";
gibt 1020 aus.
Wozu aber print wenn es SetText in Verbindung z.B. mit einem create("text oder create("edit gibt und drawText gibt es auch noch.
Das Dein Taschenrechner nicht richtig rechnet ist ein Programmablaufproblem - also ein Logisches. Da weiß ich nicht wie ich Dir helfen kann denn das Eindenken in den Code - so wie ich es verstanden habe - möchtest Du Dir selbst überlassen. So kann ich imho nur schreiben dass das Programm imho genau das macht, wie es programmiert ist. |
| | | | |
| | Gary12345 | Ja OK habe weiter gelernt. Vielleicht bin ich auch nur zu müde. Aber ich werde alles geben, es alleine das Problem zu lösen.
Danke! |
| | | | |
| | | Wenn Du nicht weiter kommst dann einfach melden. |
| | | | |
| | Gary12345 | OK kleine Nebenfrage.
man kann Zahlenwerte mit str$ in string konventieren. Wie kann ich &werte in int umwandeln? Geht das? |
| | | | |
| | | Ich verstehe nicht, was ist &werte ?
& ist ja schon int bzw. in 32-Bit XProfan long bzw. ist in 32-Bit-XProfan int=long
Es gibt val( um aus "20" 20 zu machen, quasi String->Float. |
| | | | |
| | Gary12345 | 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
Hallo,
Problem1 gelöst, es schreibt Zahlen nebeneinander, erkennt sie er nicht als 11 sondern als 1 1 1 1 ... . Also war das jetzt eine Teillösung.
Mach doch erstmal, dass wenn man einen Button klickt, dass das entsprechende Zeichen zu einem String hinzugefügt wird.
Warum zu einem string? Ich muss doch die erstmal zu einem integer wert machen? Wenn Button mit der Aufschrift 1 gedrückt wurde, füge Wert 1 hinzu usw.
Könnte mir jemand seine Gedankenschritte geben, wie man das lösen könnte. Hab jetzt schon mit multiedits rumprobiert.
Schon proggt man was vermeintlich leichtes, das jedoch dann doch etwas schwieriger ist.
Nebenfrage: KompilierenMarkierenSeparieren Definition von Parameters:
Die Aufrufparameter einer Prozedur werden Variablen zugewiesen, die innerhalb der Prozedur bekannt sind. Ein Beispiel findet sich unter Proc. Die Anzahl der Variablen sollte höchstens gleich der maximalen Anzahl der Übergabeparameter sein; überprüft wird dieses aber ebensowenig, wie die Datentypen. Gegebenenfalls erfolgt eine automatische Umwandlung.
Entweder verstehe ich Parameters falsch oder in meinem Code ist was falsch.
Wenn ich Parameters entferne, wird alles korrekt angezeigt. Was macht nun Parameters eigentlich? KompilierenMarkierenSeparieren Da geht es zum Beispiel.
Da wandelt es das ""Möchten Sie noch eine weitere Messagebox sehen?"" in einen Parameter um (fragetext$). Also kann man irgendwie Parameter erzeugen. Verstehe es aber immer noch nicht ganz.
LG |
| | | | |
| | Jörg Sellmeyer | | | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 27.01.2013 ▲ |
| |
| | Gary12345 | OK das mit Parameters habe ich verstanden. Ist ja ganz nützlich. Nur jetzt gilt es das andere zu klären. |
| | | | |
| | Gary12345 | Ich habe eine Theorie, wie ich die anderen Probleme lösen könnte.
Ich würde z.B. das so machen: KompilierenMarkierenSeparieren (ungefähr)
Gibt es für mathematische Berechnungen eine Includedatei, wenn nicht, würde ich eventuell so eine bauen? KompilierenMarkierenSeparieren Das funktioniert zum Beispiel.
Eine Include bei euch gefrunden: mathe.inc , ist aber bisschen verbuggt.
Beispielcode: KompilierenMarkierenSeparieren das print pi! ist aus der INCLUDE. Gefunden habe ich es bei euch unter INCLUDE. Wartet - ich suche schnell den Link.
EDIT: Hier der Link: [...]
Bei XProfan scheint auch eine Standardinc mitgeliefert zu sein, die entspricht aber nicht meinen Ansprüchen. Bzw. es ist über meinen Ansprüchen, dass ich in der Mathematik nicht mitkomme. Suche jetzt noch nach weiteren Includes.
Bin mittlerweile soweit: KompilierenMarkierenSeparieren
Proc Summe
parameters a!,b!
declare Summe!
set("decimals",2)
Summe! = a!+b!
ROUND(Summe!,2)
return
EndProc
Proc Minus
parameters a!,b!
declare Minus!
set("decimals",2)
Minus! = a!-b!
ROUND(Minus!,2)
return
EndProc
Proc Teilen
parameters a!,b!
declare Teilen!
set("decimals",2)
Teilen! = a!/b!
ROUND(Teilen!,2)
return
EndProc
Proc Multiplizieren
parameters a!,b!
declare multiplizieren!
set("decimals",2)
multiplizieren! = a!*b!
ROUND(Multiplizieren!,2)
return
EndProc
Proc Wurzel
parameters a!
declare Wurzel!
set("decimals",2)
Wurzel! = sqrt(a!)
Round(Wurzel!,2)
return
EndProc
Proc Kreiszahl
declare Pi!
set("decimals",10)
Pi! = 3.141592653589
return
EndProc
Proc ADreieck
parameters a!,b!
declare ADreieck!
set("decimals",2)
ADreieck! = 0.5*a!*b!
ROUND(ADreieck!,1)
return
EndProc
cls
var zahl! = Summe(3.433,2.434)
var zahl2! = Minus(3,2)
var zahl3! = Teilen(3,2)
var zahl4! = Multiplizieren(3,2)
var zahl5! = ADreieck(3,2)
print zahl!
print zahl2!
print zahl3!
print zahl4!
print Kreiszahl()
print zahl5!
WaitInput
Scheint alles zu gehen. |
| | | | |
| | Gary12345 | KompilierenMarkierenSeparieren'Include programmiert von Gary12345
Proc Summe
parameters a!,b!
declare Summe!
set("decimals",2)
Summe! = a!+b!
ROUND(Summe!,2)
return
EndProc
Proc Minus
parameters a!,b!
declare Minus!
set("decimals",2)
Minus! = a!-b!
ROUND(Minus!,2)
return
EndProc
Proc Teilen
parameters a!,b!
declare Teilen!
set("decimals",2)
Teilen! = a!/b!
ROUND(Teilen!,2)
return
EndProc
Proc Multiplizieren
parameters a!,b!
declare multiplizieren!
set("decimals",2)
multiplizieren! = a!*b!
ROUND(Multiplizieren!,2)
return
EndProc
Proc Wurzel
parameters a!
declare Wurzel!
set("decimals",2)
Wurzel! = sqrt(a!)
Round(Wurzel!,2)
return
EndProc
Proc ADreieck
parameters a!,b!
declare ADreieck!
set("decimals",2)
ADreieck! = 0.5*a!*b!
ROUND(ADreieck!,2)
return
EndProc
Proc AQuadrat
parameters a!
declare Quadrat!
set("decimals",2)
Quadrat!=a!*a!
ROUND(Quadrat!,2)
return
EndProc
Proc ARechteck
parameters a!,b!
declare Rechteck!
set("decimals",2)
Rechteck! = a!*b!
ROUND(Rechteck!,2)
Return
EndProc
Proc AKreis
parameters a!
declare Kreis!
set("decimals",2)
Kreis! = @Pi()*a!
ROUND(Kreis!,2)
Return
EndProc
Proc ATrapez
parameters a!,c!,h!'Trapezformel: 0.5*(a+c)*höhe! (h!)
declare Trapez!
set("decimals",2)
Trapez! = 0.5*(a!+c!)*h!
ROUND(Trapez!,2)
Return
EndProc
Proc AParallelogramm
parameters g!,h!
declare Parallelogramm!
set("decimals",2)
Parallelogramm! = g!*h!'Grundfläche*Höhe
ROUND(Parallelogramm!,2)
Return
EndProc
Proc VWürfel
Parameters a!
declare Würfel!
set("decimals",2)
Würfel! = a!*a!*a!
ROUND(Würfel!,2)
Return
EndProc
Proc VQuader
Parameters a!,b!,c!
declare Quader!
set("decimals",2)
Quader! = a!*b!*c!
ROUND(Quader!,2)
Return
EndProc
Proc VKugel
parameters r!
declare Kugel!
set("decimals",2)
Kugel! = 4/3*@PI()*r!*r!*r!
ROUND(Kugel!,2)
Return
EndProc
Proc VKegel
parameters r!,h!
declare Kegel!
set("decimals",2)
Kegel! = 1/3*@PI()*r!*r!*h!
ROUND(Kegel!,2)
Return
EndProc
Zurzeitiger Code. Include meiner Ansicht fertig. |
| | | | |
| | | Du musst ja die Ziffern nicht zu einem String hinzufügen, aber Du könntest.
Du kannst ebenso bei Klick auf eine Ziffer die aktuelle Summe mit 10 Multiplizieren und den Wert der geklickten Ziffer addieren.
Quasi
0 klick 1 0*10+1 1 klick 5 1*10+5 15 klick 9 15*10+9 159
so lünden die Buttonklicks auch im Wert. |
| | | | |
| | Gary12345 | Darf ich meine kleine Include bei euch vorstellen unter dem Punkt INCLUDES? |
| | | | |
|
AntwortenThemenoptionen | 25.607 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |