Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Problem mit Rechenprogramm!!
24karatboy - Di 26.06.07 10:03
Titel: Problem mit Rechenprogramm!!
Guten Morgen!
ich habe nen taschenrechner programmiert mit einem edit und vielen buttons +,-,= etc.
jetzt möchte ich z.B wenn man im ersten edit 15 eingegeben hat das er das in nen hilfserg speichert und wenn ich dann auf + drücke und eine nächste zahl eingebe und dann auf gleich drücke das der dann macht
Delphi-Quelltext
1:
| edit2.Text:=hilfserg+' + '+edit1.text; |
wenn ich dann aber weiter rechne sagen wir mal ich hab vorher 55+12 gemacht dann steht in edit2 55 + 12 und in edit1 67 nach dem ich auf gleich gedrückt habe drücke ich jetzt wieder auf plus wird 67 in hilferg gespeichert und wenn ich dann 20 eingebe und auf = drücke steht in edit2 67 + 20 was ich aber eigentlich wollte:
es soll einstatt erstmal 55 + 12 und dann 67 + 20 soll da drinne stehen 55 + 12 + 20
jemand in irgendeiner weisse nen paar denkanstösse ?
ps.: konnte heute nicht schlafen weil mir dieses problem denn kopf zerstört hat ;)
LowSkills - Di 26.06.07 10:16
[edit]
Ich hornochse, dass steht ja schon so da... :mrgreen:
[/edit]
Lass dir doch nen string übergeben. So als zusatz.
da steht dann halt der "Rechenweg" drin..
Delphi-Quelltext
1: 2: 3: 4:
| var Rechenweg : string; begin Rechenweg:= Rechenweg+' + '+IntToStr(Edit1.Text); end; |
So kannste denk ich mal den Rechenweg anzeigen lassen, falls das das ist was du willst.
FiceGoesDelphi - Di 26.06.07 10:19
Du sagst ihm er soll bei drücken auf Plus den Inhalt von Edit1 ins Hilfserg reinspeichern.
Du gibst das Ergebnis aber auch in Edit1 wieder.
Das kann dann nicht funktionieren!
Gib das Ergebniss doch in einem anderen Edit wieder. Vllt hilft dir das!
Sry habe hier gerade viel zu tun und kann mich daher nicht tiefergehend mit deinem problem auseinander setzen!
LowSkills - Di 26.06.07 10:32
neuer anlauf... :mrgreen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var Rechenweg : string; Ergebnis, Eingabe: integer; begin if not Edit1.Text = '' then begin Zahl:=StrToInt(Edit1.Text); Rechenweg:=IntToStr(Zahl); Edit1.clear; end else showmessage('Sie sollten vielleicht erst eine Zahl eingeben, bevor Sie rechnen wollen...');
if not Edit1.Text = '' then begin Eingabe:=StrToInt(Edit1.Text); Zahl:=Zahl+StrToInt(Edit1.Text); Edit1.Text:=StrToInt(Zahl); Rechenweg:=Rechenweg+' + '+inttostr(Eingabe); Edit2.Text:=Rechenweg; end else ShowMessage('Bitte geben Sie eine Zahl ein'); end; |
trägst du jetzt 1 in ed1 ein, wird Zahl1, ed1 wird geleert, zweite eingabe wird erwartet.
gibts du dann in ed1 5 ein, ist zahl = 6 und wird in ed1 so ausgegeben. In ed2 steht dann der Rechenweg, nähmlich "1 + 5"
Müsste so funktionieren.
24karatboy - Di 26.06.07 10:35
ähm sorry aber bis jetzt haben mir die antworten noch nicht wirklich geholfen ich habs auch mal probiert in dem ich direkt die zahl beim + übergeben habe aber war auch nicht so wie ich mir das vorgestellt habe.
plus drücken:
edit2.text:=edit2.text+' + '+edit1.text
aber ich meine das hat nicht das richtige ergebnis erzielt
und noch ein edit möchte ich eher weniger weil dann wird alles ziemlich unübersichtlich
mfg
24karatboy - Di 26.06.07 10:39
ich stelle euch mal meinen quellcode und die exe hier rein ich bitte um feedback
LowSkills - Di 26.06.07 10:47
Gibts da auch ein Handbuch zu?
Edit1 ist oben, nehm ich mal an. Da trage ich "1" ein, drücke Plus, Meldung: Sie müssen schon was eingeben"...
Edit2 ist readOnly?
Ich hab es also noch nicht mal bis 1 + 1 gebracht... :?:
24karatboy - Di 26.06.07 10:49
das obere edit ist edit2 und es ist nicht zur eingabe gedacht nur das edit1 und da ist atm nur ne eingabe über die buttons möglich
LowSkills - Di 26.06.07 10:57
achso *schäm* ;)
OK, das bringt schonmal klarheit.
Kannste hier nur mal den Auszug posten, der für Edit 2 zuständig ist? (+ varibalen)
Hab hier nähmlich weder rar noch delphi...
Dann kann ich dir u. U. helfen.
mfG
24karatboy - Di 26.06.07 11:03
ich weiss nicht ob ich das richtig verstanden habe aber ich poste dir mal alles was mit edit2 zutun hat ;) aber nur pseudocode bzw. schon delphi code aber einfach an einander gereiht ohne ordnung
Delphi-Quelltext
1: 2: 3:
| hilfserg:=edit1.Text; edit2.Text:=edit2.text+hilfserg+' + '+edit1.text; |
mfg
Tilo - Di 26.06.07 11:04
Den Wert aus dem Edit nicht in einmen string abspeichern, sondern in eine Zahl, z.B. Real
Delphi-Quelltext
1:
| hilfzahl=strtofloat(edit.text) |
Beim rechen so vorgehen:
Delphi-Quelltext
1: 2: 3:
| hilfzahl2:=strtofloat(edit.text); erg:=hilfzahl+hilfzahl2; ausgabedit.text:=floattostr(erg); |
24karatboy - Di 26.06.07 11:07
tilo danke das du dich bemüht hast mir zu helfen aber die rechnungen funzen wunderbar geh mal nach oben und les bitte einmal evtl. weisste dann besser wo das problem liegt. danke
mfg
LowSkills - Di 26.06.07 11:21
Delphi-Quelltext
1: 2:
| edit2.Text:=edit2.text+hilfserg+' + '+edit1.text; |
also so:
Delphi-Quelltext
1:
| edit2.Text:=edit2.text' + '+edit1.text; |
Das hilfserg. Hat ja mit dem Rechenweg (den du ja wohl sehen willst) nichts zu tun.
24karatboy - Di 26.06.07 11:26
im hilfserg wird ja die zuerst eingegebene zahl gespeichert und in edit1.text steht ja die 2. zahl wenn man auf = drückt.
und ich will halt in edit2.text sehen was ich gerechnet habe und wenn ich das hilfserg weg lasse dann fehlt mir ja die erste zahl
LowSkills - Di 26.06.07 11:58
OK, nochmal ein schuss ins blaue:
Ich gebe 2 ein, drücke +, geb nochmal 2 ein, in ed1 steht das ergebnis, =4, das zugleich als hilfserg übergeben wird. In ed2 steht 2 + 2. Bis dahin ist ja alles soweit gut.
Dann drücke ich nochmal + und gebe 5 ein, das ergebnis wird richtigerweise als 9 ermittelt. in ed2 steht jetzt 2 + 24 + 5.
Das heist das das hilfsergebnis überflüssigerweise in deinem Rechenweg erscheint, oder nicht?
Wenn ich 2 + 2 rechne, ist hilfserg = 4, ed1=4, ed2 = 2 + 2.
Dann rechne ich + 5, im ed2 soll aber nicht das ergebnis, sondern der rechenweg stehen.
So wie ich das sehe, MUSST du das hilfserg. rausnehmen. Nur so kommst du zu ed2 = 2 + 2 + 5...
24karatboy - Di 26.06.07 12:09
schon ein bisschen näher aber noch nicht ganz
noch einmal das prinzip so wie du das gesagt hast habs gerade mal probiert steht wenn ich 2+5 rechne +5 im ed2 es soll ja 2 + 5 dort stehen
wenn ich ne zahl eingebe und auf + drücke dann wird das was in edit1 steht als string an hilfserg weitergegeben und dann gebe ich ne 2. zahl ein und drücke auf gleich und dann soll der die 2. zahl anhängen und vorher gucken welche operation gewählt wurde das heisst wenn vorher + gedrückt wurde sollte jetzt
hilferg:=2; edit1.text:=5
edit2.text:=hilferg+' + '+edit1.text;
edit2.text:='2'+' + '+'5';
evtl. ist es dir jetzt deutlicher geworden
mfg
ZeitGeist87 - Di 26.06.07 12:20
Was ist denn so kompliziert??
Delphi-Quelltext
1: 2:
| edit2.text:= edit2.text + |
LG
Stefan
24karatboy - Di 26.06.07 12:25
aber echt ? wieso nicht so einfach ^^ und ich werkel hier rum und schaue wie ich das machen könnte ...
danke
mfg
LowSkills - Di 26.06.07 13:12
Danke Zeitgeist, jetzt hast du mir den Auftritt vermasselt ;)
BTW: Du hast bei dem Rechner so ne Uhr drin, jetzt frag ich mal was:
Wie geht das?
:mrgreen:
Ach ja: Schön, dass es jetzt funzt.
mfG
24karatboy - Di 26.06.07 13:22
du legste nen timer auf die form und nen label
und dann machste im OnTimer ereignis des timers time.caption:=FormatTime('hh:nn:ss', now);
dann bestimmt der die jetzige zeit und lässt denn dann laufen durch den timer
ja und das interval musste halt auf 1000ms setzen für eine sekunde
ZeitGeist87 - Di 26.06.07 13:32
Die Funktion heisst FormatDateTime()....
Ist dein Problem mit dem Rechenweg jetzt gelöst oder nicht?
Umanandaspinna kannst du im Off-Topic :P
LG
Stefan
24karatboy - Di 26.06.07 13:36
du hast recht zeitgeist und was kann ich im off topic ?
das problem mit dem rechenweg hab ich gelöst wo kann ich das prog denn am besten mal rein setzen um feedback zu bekommen ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!