![]() |
Taschenrechner
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
ich hab grad mit der delphi sprache angefangen und hab da so ein kleines Problem. Ich wollte mal damit einen Taschenrechner versuchen zu programmieren mit den Grundrechnungsverfahren also Plus, minus, geteilt etc. aba irgendwie kommt der nie zu einem ergebnis, könnt ihr mir helfen bitte mein projekt findet ihr im anhang Ooops, jetzt hab ichs 2mal eingefügt :oops: |
Re: Taschenrechner
Schau dich hier mal im Forum um
![]() Mfg Tobi btw: Man kann das doppeltangehänge Attachment auch löschen... |
Re: Taschenrechner
Also so wie du deine Bezeichner gewählt hast, blicke ich da sowieso überhaupt nicht durch... :gruebel:
|
Re: Taschenrechner
Mein hauptproblem ist eig:
Fehlermeldung -> '' ist keine gültige Gleitkommazahl. Wie kommt das eig. immer, anfangs als ich die Subtraktion da nicht hatte ging das noch, aba jetzt kommt das ständig. |
Re: Taschenrechner
In Ed2 steht nix drin. Daher kann die Funktion StrToFloat es auch nicht in eine Zahl umwandeln.
Du solltest dir angucken, welche beiden Strings du umwandeln musst, und diese dann miteinander verrechnen. Das Design und die Benutzerfreundlichkeit sind... interessant. MfG, hanselmansel |
Re: Taschenrechner
Liste der Anhänge anzeigen (Anzahl: 1)
Najo, das Problem hab ich jetzt behoben und das layout n bisle besser gemacht, aber ich hab immer noch das Problem, dass ich jetzt nur die Addition hinkriege, irgendwas mache ich bei meiner "=" procedure falsch, könnt ihr mir mal weiterhelfen, die if-verschachtelung macht mich noch verrückt.
|
Re: Taschenrechner
Zitat:
Wieso machst du alle möglichen Edits sichtbar und dann sieder unsichtbar und so weiter? Bau dir Doch in der einfachsten Form erstmal 3 Edits: zwei für die Operanden, eines fürs Ergebnis. Beim Klicken auf einen der Operatoren machst du erstmal gar nichts, außer dir zu merken, auf welchen du geklickt hast. In der Prozedur, die hinter dem Gleichheitszeichen steckt, prüfst du, ob in den beiden Edits gültige Zahlen stehen, dann wandelst du sie um und verrechnest sie entsprechend der Art und Weise, die du vorher gespeichert hast. Wenn es sich bei den Inhalten der edits um was Falsches handelt, gibst du schöne, vielsagende Fehlermeldungen aus, und alle sind glücklich. MfG, hanselmansel P.S.: Wenn die die echse löschst, bevor du den Ordner zippst, musst nu nicht 400, sondern nur 10 KB uploaden. |
Re: Taschenrechner
Ok, so werd ichs jetzt auch mal machen, nur ein Problem hab ich dann, denn meine Taschenrechner tastatur funktioniert nur für ein edit-feld, aber sie soll ja für 2 edit felder funktionieren, wie kann ich das denn Programmieren, dass wenn ich den Cursor auf einem editfeld habe die in diesem die Zahlen eingibt,und sonst ins andere?
Auf dem Niveau befinde ich mich leider noch nich. PS: Ja, würd zwar weniger kb kosten, aber dann muss ich die exe vorher raushohln, wobei ich ansonsten einfach rechtsklick zip machen kann^^ |
Re: Taschenrechner
Liste der Anhänge anzeigen (Anzahl: 1)
Achja, und zusätzlich dazu noch, wie kann ich jetzt dem Taschenrechner das Rechnen von Brüchen reinprügeln?
Dass er z.B. 2_3+"15_3 = 17_3 rausgibt, und wie kann ich dem noch sagen dass er es kürzen soll, also, dass er anstatt 17_3 mir 5_2_3 angibt? PS: Hier hab ich die neue Version |
Re: Taschenrechner
Huiuiui, jetzt gehen wir aber ran! :mrgreen:
Quick & Dirty: Nimm 2 neue Editfelder, und der Nenner ist gegessen. :stupid: In wie weit das die Benutzbarkeit beeinträchtigt sei dahingestellt, aber du wolltest es ja reinprügeln. Alternative: Du benutzt einen Bruch-Button. Wenn auf ihn geklickt wird, wird an das akt. Edit ein Unterstrich angefügt und der Rechner weiß, dass jetzt der Nenner kommt Eine Stufe anspruchsvoller: Du prüfst, ob im Edit ein Unterstrich vorhanden ist, und wandelst dann sowohl den Teil davor, als auch dahinter in Zähler bzw. Nenner um. Erwähnt seien heirbei die Funktionen ![]() ![]() Die haute cuisine: Sowohl Operanden als auch Operatoren werden auf einem Stack abgelegt und ihrer Priorität nach abgearbeitet. Dadurch bekommst du u.a. Brüche, Punkt-vor-Strich-Rechnung oder auch Klammern. Persönlicher Kommentar: Es hört sich fast so an, als solltest du diesen Taschenrechner für irgendeine Lehranstalt programmieren. In diesem Fall würde ich Möglichkeit 2 bevorzugen... MfG, hanselmansel P.S.: Hatte ich zu dem Wechsel zwischen den Edits nicht gerade etwas mit ![]() |
Re: Taschenrechner
Die haute cuisine:
Sowohl Operanden als auch Operatoren werden auf einem Stack abgelegt und ihrer Priorität nach abgearbeitet. Dadurch bekommst du u.a. Brüche, Punkt-vor-Strich-Rechnung oder auch Klammern. Naja, das versteh ich jetzt nicht |
Re: Taschenrechner
Zitat:
das ist eigentlich recht einfach. Du musst nur mal nach Stack und Operatoren suchen. An sich ist ein Stack einfach nur eine sehr sehr einfache Datenstruktur. Wörtlich würdest du Stapel dazu sagen. Ein Stack funktioniert im Prinzip genau so, wie es auch ein normaler Stapel tut. Du legst alles neue oben rauf. Dabei wird alles schön einzeln immer raufgepackt. Runterholen funktioniert natürlich genau umgekehrt, du nimmst immer zuerst das oberste Element runter (last-in, first-out / LIFO). Das Gegenstück dazu ist die Queue. Das wäre eine Schlange, dieser wird zwar hinten etwas angehangen, aber immer der Kopf entfertn (first-in, first-out / FIFO). Stacks werden dir sicherlich früher oder später mal über den Weg laufen, wie gesagt das eigentlich wichtige ist nur, dass du hier das letzte was du reintust als erstes raus bekommst. Der theoretische Nutzen ist zwar schon von hanselmasel erklärt, aber ich denke da sollte er wirklich noch ein etwas auführlichere Erklärung folgen lassen! Wie gesagt, einfache Datenstruktur und es sind auch sehr einfache Operationen! Ach und nebenbei bemerkt : Willkommen in der DP! :dp: Gruß Der Unwissende |
Re: Taschenrechner
ja, ich habs raus.
Hab noch eine dumme frage. Extra Proceduren kann man ja bei privates machen, aba wie genau sieht das aus, wenn ich z.b.: Procedure Kuerzen; begin ... end; hinschreibe kommt dort immer eine fehlermeldung. |
Re: Taschenrechner
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } Procedure Foo(x,y :Integer); //nur den Kopf der Prozedur public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Close; end; // Die Klasse, zu der die Prozedur gehört // | // V procedure TForm1.Foo(x, y: Integer); begin doSomethingUseful; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz